1 游标的使用:
>var x=db.c1.find();
>x.hasNext();
>x.next()
>var cur=db.c1.find().skip(10).limit(8);
>cur.forEach(function(x){print(tojson(x))});
输出:
2 NUll查询
db.c1.find({age:{$exists:1,$in:[null]}}); 查找存在age列且值为null的文档
或者 db.c1.find({age:{$type:10,name:"user1"}}); 其中$type:10表示null
3 $slice
db.c1.find({name:"user1",{post:{$slice:3}});
其中$slice:3表示post数组中的前三个
db.c1.find({name:"user1"},{post{$slice:[1,2]}});
表示从第一个开始取两个
4 update 语法
db.collection.update(criteria,objNew,upsert,multi);
criteria:用于设置查询条件对象
ObjNew:用于设置更新对象的内容
Upsert:如果记录已经存在,更新它,否则新增一个记录
Multi:如果有多个符合条件的记录,全部更新(默认值为0,且只能用于魔术变量)
db.c1.update({name:"user1"},{name:"user11"},1); 如果user1不存在则添加user11记录
4.1 $set
db.c1.update({name:"user11"},{$set:{name:"user1"}},0,1);
db.c1.update({name:"user1"},{$set:{age:10}},0,1);
4.2 $inc
db.c1.update({},{$inc:{score:10}},0,1);
{}匹配所有的记录
如果有score字段则加十分,如果没有则增加score字段且值为10
4.3 $push和$pop
db.c1.update({name:"user1"},{$push:{arr:4}});
在arr数组中加元素4
db.c1.update({name:"user1"},{$pop:{arr:1}});
从arr数组中去除最后那个元素
$pushAll 压入整个数组
4.4 $addToSet
db.c1.update({name:"user1"},{$addToSet:{arr:{$each:[7,8,9]}}});
依次压入数组内容【7,8,9】
4.5 $pull
db.c1.update({name:"user1"},{$pull:{arr:5}});
$pull删除数组中的具体值
$pullAll用法:db.c1.update({name:"user1"},{$pullAll:{arr:[2,4]}});
4.6 $rename
db.c1.update({name:"user1"},{$rename:{arr:"post"}});