连接mongodb:(mongo命令打开的是一个javascript shell。所以js语法在这里面都行得通)
mongo 192.168.18.xx:27088/ups -uusername -ppassword

mongo  192.168.6.4:27017/admin -u root -p 123456

帮助:
help
db.help()
db.mycoll.help()

切换或创建数据库:
use testdb

创建集合:
db.createCollection("mycollection") --看增加选项参数指定集合选项

用户等基本信息查询:
db.addUser('name','pwd') --增加或修改用户密码
db.system.users.find() --查看用户列表
db.auth('name','pwd') --用户认证
db.removeUser('name') --删除用户
show users --查看所有用户
show dbs --查看所有数据库
show collections --查看所有的collection
db.printCollectionStats() --查看各collection的状态
db.copyDatabase('mail_addr','mail_addr_tmp') --拷贝数据库
db.mail_addr.drop() --删除collection
db.dropDatabase() --删除当前的数据库

插入:
db.mycollection.insert({"a":"s","sd":2}) --“_id": 这个字段是数据库默认给我们加的GUID,目的就是保证数据的唯一性
或:db.mycollection.save({"a":"s","sd":2})

var data={"name":"limin", "age":22, "address":"shenzhen"}
db.mycollection.insert(data)
db.mycollection.find()
data.name="yyy"
db.mycollection.insert(data)

db.foo.save({'name':'ysz','address':{'city':'beijing','post':100096},'phone':[138,139]}) --存储嵌套的对象
db.user_addr.save({'Uid':'yushunzhi@sohu.com','Al':['test-1@sohu.com','test-2@sohu.com']}) --存储数组对象

删除:
db.mycollection.remove({}) --删除mycollection中所有数据
db.mycollection.remove({"name":"eee"}) --删除满足条件的所有数据

更新:
db.mycollection.update({"name":"www"}, {"name":"eee"}) --update方法的第一个参数为“查找的条件”,第二个参数为“更新的值” 属于整体更新(但只更新一条)
db.mycollection.update({"name":"www"}, {$inc:{"age":10}}) --局部更新,age增加10
db.mycollection.update({"name":"www"}, {$set:{"age":10}}) --局部更新,age变更为10

db.mycollection.update({"name":"www"}, {"name":"eee"},true)
db.mycollection.update({"name":"www"}, {"name":"eee"},upsert=true) --upsert操作(将update的第三个参数设为true即可),更新时如果根据条件没有查到,就在数据库里面新增一条

db.mycollection.update({"age":22}, {$set:{"age":32}},upsert=true,multi=true) --批量更新(在update的第四个参数中设为true即可), 满足条件的都更新

查询:
db.mycollection.find() 或 db.mycollection.find({}) --查询所有

db.mycollection.find().pretty() -- 改变显示方式

db.mycollection.find( { type: 'food' }, { item: 1, qty: 1, _id:0 } )   --仅返回指定字段item和qty, 不返回_id

db.mycollection.find({"age":22}) --查询age为22的
db.mycollection.findOne({"name":"www"}) --查出一条数据
db.mycollection.find({}).limit(2) --限制查询的数据条数
db.users.find().skip(3).limit(5) --从第3条(0开始的)记录开始,返回5条记录

$where查询:
db.testy.find({"$where":function(){return this.age==22}})
或:db.testy.find({"$where":"this.age==22"}) --采用$where子句查询在速度上较常规查询慢的多。因文档需要从BSON转换成javascript对象,然后通过"$where"的表达式来运行

关系查询:
"$gt", "$gte", "$lt", "$lte", "$ne", "没有特殊关键字" (>, >=, <, <=, !=, =):
db.mycollection.find({"age":{$lt:22}})

"无关键字“, "$or", "$in","$nin"(And,OR,In,NotIn):
db.mycollection.find({"age":22, "name":"www"}) --and
db.mycollection.find({$or:[{"name":"yyy"},{"age":10}]}) --or
db.mycollection.find({"age":{$in:[22, 10]}}) --in  并集

db.mycollection.find({"age":{$all:[22, 10]}}) --in  交集

db.mycollection.find({"name":/^w/}) --使用正则表达式

排序:
db.mycollection.find({}).sort({"age":-1}) --以年龄降序desc
db.mycollection.find({}).sort({"age":1}) --以年龄升序asc

子对象的查询:
db.foo.find({'address.city':'beijing'})

聚合查询:
db.mycollection.count({}) --mycollection中数据总条数
db.mycollection.count({"age":22}) --满足条件的数据条数
db.mycollection.distinct("age") --age值的不重复集合

分组group查询:
db.mycollection.group({
"key":{"age":true},
"initial":{"nihao":[]},
"$reduce":function(cur,prev){
prev.nihao.push(cur.name);
}
})

说明:
key:这个就是分组的key,我们这里是对年龄分组。
initial: 每组都分享一个”初始化函数“,特别注意:是每一组,比如这个的age=20的value的list分享一个initial函数,age=22同样也分享一个initial函数。(nihao、cur、prev是自定义的,name是待显示数据的key)
$reduce(或reduce): 这个函数的第一个参数是当前的文档对象,第二个参数是上一次function操作的累计对象,第一次为initial中的{”perosn“:[]}。有多少个文档, $reduce就会调用多少次。

db.mycollection.group({
"key":{"age":true},
"initial":{"nihao":[]},
"reduce":function(cur,prev){
prev.nihao.push(cur.name);
},
"finalize":function(prev){
prev.count=prev.nihao.length;
}
})

说明:
加上一个count属性标明每个分组中的数量
finalize:这是个函数,每一组文档执行完后,多会触发此方法,那么在每组集合里面加上count也就是它的活了。

db.mycollection.group({
"key":{"age":true},
"initial":{"nihao":[]},
"reduce":function(cur,prev){
prev.nihao.push(cur.name);
},
"finalize":function(prev){
prev.count=prev.nihao.length;
},
"condition":{"age":{$lt:25}}
})

说明:
condition:这个就是过滤条件。不满足条件的被过滤掉。

游标:
(类似延迟执行)
var cc=db.mycollection.find({}) --申明一个“查询结构”cc
cc.next() --需要的时候next读取一条
cc.forEach(function(x){print(x.age)}) --或通过for循环读取
游标枚举完了之后,游标销毁,在读取就没有数据了
例子:
var cursor = db.C.find() --定义游标
while(cursor.hasNext()){
var obj = cursor.next();
print(obj.a);
......
}

索引:
性能分析函数(explain):db.mycollection.find({}).explain()

主要字段解释:
cursor: 这里出现的是”BasicCursor",什么意思呢,就是说这里的查找采用的是“表扫描”,也就是顺序查找,很悲催啊。
nscanned: 这里是10w,也就是说数据库浏览了10w个文档,很恐怖吧,这样玩的话让人受不了啊。
n: 这里是1,也就是最终返回了1个文档。
millis: 这个就是我们最最最....关心的东西,总共耗时114毫秒。

db.mycollection.ensureIndex({"name":1}) --使用ensureIndex在name上建立了索引。1表示按照name进行升序,-1表示按照name进行降序
db.mycollection.ensureIndex({"name":1},{"unique":true}) --建立唯一索引,重复的键值自然就不能插入
db.mycollection.ensureIndex({"name":1, "age":1}) --组合索引
db.mycollection.find({}).getIndexes()
db.mycollection.getIndexKeys() --查mycollection集合的索引信息
db.mycollection.find({}).hint({"age":1}) --按自己的方案暴力执行
db.mycollection.dropIndexes("name") --删除索引

mongodb操作命令的更多相关文章

  1. mongoDB操作命令及mongoDB的helper

    此项目已开源,开源地址是: http://mongodbhelper-csharp.googlecode.com/svn/trunk/ mongodb的helper using System; usi ...

  2. mongodb系列之---副本集配置与说明

    在配置副本集之前,我们先来了解一些关于副本集的知识. 1,副本集的原理 副本集的原理与主从很相似,唯一不同的是,在主节点出现故障的时候,主从配置的从服务器不会自动的变为主服务器,而是要通过手动修改配置 ...

  3. MongoDB的基本使用及java对MongoDB的基本增删改查

    MongoDB的特点 MongoDB 是文档存储数据库,存储结构灵活 MongoDB 支持复杂查询操作.支持序列 MongoDB 采用C++开发,可以做分布式扩展 MongoDB 采用BSON格式存储 ...

  4. Centos 7.3 安装 Mongodb

    通过yum 安装: yum install -y mongodb-server Mongodb操作命令: #启动 systemctl start mongod.service #关闭 systemct ...

  5. MongoDB基础教程(安装、操作、配置)

    MongoDB 下载安装 简易安装 # redhat, centOS sudo yum install -y mongodb # debian, ubuntu sudo apt install -y ...

  6. MongoDB常用操作命令大全

    成功启动MongoDB后,再打开一个命令行窗口输入mongo,就可以进行数据库的一些操作.输入help可以看到基本操作命令,只是MongoDB没有创建数据库的命令,但有类似的命令 如:如果你想创建一个 ...

  7. MongoDB基本操作命令

    由于工作需要,笔者这两天使用了一下MongoDB.真的很不习惯!但是确实好用,命令比mysql和sqlserver简单很多.在这里整理一些MongoDB的基本操作命令分享出来. 客户端的安装就不说了, ...

  8. MongoDB(1):常用操作命令大全

    MongoDB常用操作命令大全(转) http://www.jb51.net/article/48217.htm 成功启动MongoDB后,再打开一个命令行窗口输入mongo,就可以进行数据库的一些操 ...

  9. MongoDB学习总结(二) —— 基本操作命令(增删改查)

    上一篇介绍了MongoDB在Windows平台下的安装,这一篇介绍一下MongoDB的一些基本操作命令. 下面我们直奔主题,用简单的实例依次介绍一下. > 查看所有数据库 (show dbs) ...

随机推荐

  1. Git命令回顾

    团队从Eclipse迁移到Android Studio之后,也从SVN迁移到Git了. 一直忙于需求迭代无暇做迁移,现在才开始做,相见恨晚,好东西,高大上,词穷. 回顾和记录一下git的一些基本操作. ...

  2. source和./的区别

    熟悉Linux的朋友常使用·bash·.·sh·.·source·.·.·,但却并非每位朋友都知道其中的区别.我们通过下面一幅图来为大家说明白.

  3. js函数中this的不同含义

    1.js函数调用过程中,js线程会进入新的执行环境并创建该环境的变量对象,并添加两个变量:this和arguments,因此可以在函数中使用这两个变量.需要注意的是,this变量不能重新赋值,而arg ...

  4. 安装KB3132372补丁后,WIN10中IE内核加载flash崩溃

    今天(2015年12月30日)突然很多人反馈在WIN10上IE内核的PC端应用崩溃.经过一番查找,最终定位到问题.WIN10今天发布了新的补丁KB3132372,64位系统更新该补丁后,打开IE内核的 ...

  5. android so调试时遇到的坑 - arm流水线

    直接看下面这段ARM汇编: 此时运行到的代码为ADD R3,PC 此时看一下寄存器窗口的值: 按理来说执行完ADD R3,PC后的效果应该是R3=R3+PC ,R3=40A1D5C8 但是我们可以执行 ...

  6. ASM:《X86汇编语言-从实模式到保护模式》第9章:实模式下中断机制和实时时钟

    中断是处理器一个非常重要的工作机制.第9章是讲中断在实模式下如何工作,第17章是讲中断在保护模式下如何工作. ★PART1:外部硬件中断 外部硬件中断是通过两个信号线引入处理器内部的,这两条线分别叫N ...

  7. C Primer Plus_第9章_函数_编程练习

    1.题略 /*返回较小值,设计驱动程序测试该函数*/ #include <stdio.h> double min (double a, double b); int main (void) ...

  8. 可以改变this指向的方法

    this一般指向的是当前被调用者,但也可以通过其它方式来改变它的指向,下面将介绍三种方式: 1.call用作继承时: function Parent(age){ this.name=['mike',' ...

  9. (分享) git详解

    今天学了下git  http://blog.jobbole.com/78960/   他写的超级好的 之前也弄过,在eclipse上有个关于github的一个插件,可以通过github的仓库地址把ec ...

  10. Redis初探

    Redis如今已经成为Web开发社区中最火热的内存数据库之一,而他的诞生距离现在不过才6年的时间,随着Web2.0的蓬勃发展,网站数据快速增长,对高性能读写的需求也越来越多,再加上半结构化的数据比重逐 ...