对mongo常用指令做一个总结:
1.mongo --help 查看mongo支持的参数
2.show dbs 登录mongo后查看mongo有哪些库
3.show databases 是show dbs的别名
4.use db使用或者创建某个库.存在就使用,不存在就创建
5.db当前选中的库名
6.db.help() db支持哪些函数或者方法,可以列出很多系统函数,如:db.version()等
7.db.methodName 查看某个函数的源码,例如:db.version返回的就是db.version()函数的源码。
8.show collections 查看当前db里面有哪些集合
9.db.collection.help() 查看集合支持哪些函数
10.db.collection.methodName 查看集合函数源码,例如:db.collection.find 展示find函数源码
//更新操作
db.collection.find()详解:
db.collection.find(where,field,length,skip);
其中where指的是查询的条件,field指的是查询出的字段,length指的是需要查询出几条记录,skip指的是忽略几条记录。
例如:
上图查询出了x为1的文档,只显示y字段信息.
上图查询x为1,字段显示y,只查询出前2条记录
上图查询出x为1,字段显示y,查询出2条记录,偏移量为1条文档
db.collection.find();查询所有记录 相当于select * from table
db.collection.find({});同上,查询所有记录
db.collection.find({name:"lee"}) 查询name为lee的文档 相当于select * from table where name = 'lee'
db.collection.find({name:"lee"},{id:1,name:1}) 相当于select id,name from table where name = 'lee'
db.collection.find({name:"lee"},{name:0})相当于查询出name 为lee的文档,文档包括除了name字段外的其他字段
db.collection.find({name:'lee',age:21}) 相当于查询 select * from table where name = 'lee' and age = 21
例如:myct集合里面有如下几条数据:
$or查询:
db.myct.find({"$or":[{x:2},{x:3}]}) 查询出x=2或者x=3的文档
db.myct.find({x:{"$gte":2}}) 查询出x>=2的文档
db.myct.find({x:{"$gte":2,"$lt":5}})查询出2<=x<5的文档
$ne:
db.myct.find({"y.a":{"$ne":1}})查询出y.a里面不等于1的文档
$in和$nin:
db.myct.find({"y.b.b":{"$in":[3,5]}})查询出y.b.b的值包含3或者5的文档:
$eleMatch:
db.myct.find();如下:
db.myct.find({"y.b.b.x":1});查询结果如下:
将会有两条记录,我们实际是希望找到有数组的那条记录:
db.myct.find({"y.b.b":{"$eleMatch":{x:1,y:2}}});
这样就完全匹配这条记录了。
js函数查询:
查询出x==1的文档
查询字段值为null的情况
所以应该这样查询:
db.myct.find({"c":{"$in":[null],"$exists":true}})
$mod 取模运算
例如要取出y.a除以5,余数是2的文档:
但是如果想找出y.a除以5余数是不是2的文档呢:
如果:db.myct.find({"c":null})就会返回c等于null,并且无c字段的文档:
加一个$not就ok了
$size操作:
查询出y.b.b的长度为2的文档:
$where 操作:
查询出x等于1,并且y.a>2的文档:
使用$where会降低速度,这地方需要注意呀。
正则表达式:略...
更新操作:
db.myct.update(where,data,upsert,mutile);
where就是需要更新的查询条件;data指需要更新的数据,包括各种操作;upsert指的是如果通过where没有查询到改文档,那么就插入一个文档,并且更新为data,mutile指的是是否批量操作,如果为true,那么就是查询到多少满足条件的文档就更新几条。
后续更新