MongoDB之学习【四】:mongoDB基本操作 - 增、删、查

一、增加数据

1、insert 插入数据
> db.c5.insert({name:"user1"});
WriteResult({ "nInserted" : 1 })
> db.c5.insert({name:"user2"});
WriteResult({ "nInserted" : 1 })
> db.c5.insert({name:"user3"});
WriteResult({ "nInserted" : 1 })
> db.c5.insert({name:"user4"});
WriteResult({ "nInserted" : 1 })
> db.c5.insert({name:"user5"});
WriteResult({ "nInserted" : 1 })
> db.c5.find();
{ "_id" : ObjectId("5d5e7b310bccde4320cfbfaf"), "name" : "user1" }
{ "_id" : ObjectId("5d5e7b390bccde4320cfbfb0"), "name" : "user2" }
{ "_id" : ObjectId("5d5e7b3d0bccde4320cfbfb1"), "name" : "user3" }
{ "_id" : ObjectId("5d5e7b430bccde4320cfbfb2"), "name" : "user4" }
{ "_id" : ObjectId("5d5e7b4a0bccde4320cfbfb3"), "name" : "user5" }


> db.c5.insert({name:"zhangsan", sex:"male", weight:"160"});
WriteResult({ "nInserted" : 1 })
> db.c5.find();
{ "_id" : ObjectId("5d5e7b310bccde4320cfbfaf"), "name" : "user1" }
{ "_id" : ObjectId("5d5e7b390bccde4320cfbfb0"), "name" : "user2" }
{ "_id" : ObjectId("5d5e7b3d0bccde4320cfbfb1"), "name" : "user3" }
{ "_id" : ObjectId("5d5e7b430bccde4320cfbfb2"), "name" : "user4" }
{ "_id" : ObjectId("5d5e7b4a0bccde4320cfbfb3"), "name" : "user5" }
{ "_id" : ObjectId("5d5e7c720bccde4320cfbfb4"), "name" : "zhangsan", "sex" : "male", "weight" : "160" }
Insert还可以插入子json
> db.c5.insert({name:"Yixiantian", post:{title:"kungfu", desc:"BaChiQuan"}});
WriteResult({ "nInserted" : 1 })
> db.c5.find();
{ "_id" : ObjectId("5d5e7b310bccde4320cfbfaf"), "name" : "user1" }
{ "_id" : ObjectId("5d5e7b390bccde4320cfbfb0"), "name" : "user2" }
{ "_id" : ObjectId("5d5e7b3d0bccde4320cfbfb1"), "name" : "user3" }
{ "_id" : ObjectId("5d5e7b430bccde4320cfbfb2"), "name" : "user4" }
{ "_id" : ObjectId("5d5e7b4a0bccde4320cfbfb3"), "name" : "user5" }
{ "_id" : ObjectId("5d5e7c720bccde4320cfbfb4"), "name" : "zhangsan", "sex" : "male", "weight" : "160" }
{ "_id" : ObjectId("5d5e7ce60bccde4320cfbfb5"), "name" : "user6" }
{ "_id" : ObjectId("5d5e7d0a0bccde4320cfbfb6"), "name" : "user6" }
{ "_id" : 5, "name" : "user55" }
{ "_id" : ObjectId("5d5f62cf8ee97b67104bcc89"), "name" : "Yixiantian", "post" : { "title" : "kungfu", "desc" : "BaChiQuan" } }
Insert 也可以插入数组
> db.c5.insert({name:"YeWen", student:["Bruce Lee", "liang", "many"]});
WriteResult({ "nInserted" : 1 })
> db.c5.find();
{ "_id" : ObjectId("5d5e7b310bccde4320cfbfaf"), "name" : "user1" }
{ "_id" : ObjectId("5d5e7b390bccde4320cfbfb0"), "name" : "user2" }
{ "_id" : ObjectId("5d5e7b3d0bccde4320cfbfb1"), "name" : "user3" }
{ "_id" : ObjectId("5d5e7b430bccde4320cfbfb2"), "name" : "user4" }
{ "_id" : ObjectId("5d5e7b4a0bccde4320cfbfb3"), "name" : "user5" }
{ "_id" : ObjectId("5d5e7c720bccde4320cfbfb4"), "name" : "zhangsan", "sex" : "male", "weight" : "160" }
{ "_id" : ObjectId("5d5e7ce60bccde4320cfbfb5"), "name" : "user6" }
{ "_id" : ObjectId("5d5e7d0a0bccde4320cfbfb6"), "name" : "user6" }
{ "_id" : 5, "name" : "user55" }
{ "_id" : ObjectId("5d5f62cf8ee97b67104bcc89"), "name" : "Yixiantian", "post" : { "title" : "kungfu", "desc" : "BaChiQuan" } }
{ "_id" : ObjectId("5d5f64408ee97b67104bcc8a"), "name" : "YeWen", "student" : [ "Bruce Lee", "liang", "many" ] }
建议:不要插入层级太复杂的数据,否则,PHP来处理数据的时候,会非常麻烦!

2、save 插入数据
> db.c5.save({name:"user6"});
WriteResult({ "nInserted" : 1 })
> db.c5.find();
{ "_id" : ObjectId("5d5e7b310bccde4320cfbfaf"), "name" : "user1" }
{ "_id" : ObjectId("5d5e7b390bccde4320cfbfb0"), "name" : "user2" }
{ "_id" : ObjectId("5d5e7b3d0bccde4320cfbfb1"), "name" : "user3" }
{ "_id" : ObjectId("5d5e7b430bccde4320cfbfb2"), "name" : "user4" }
{ "_id" : ObjectId("5d5e7b4a0bccde4320cfbfb3"), "name" : "user5" }
{ "_id" : ObjectId("5d5e7c720bccde4320cfbfb4"), "name" : "zhangsan", "sex" : "male", "weight" : "160" }
{ "_id" : ObjectId("5d5e7ce60bccde4320cfbfb5"), "name" : "user6" }
如果再插入“user6”会怎么样?
> db.c5.save({name:"user6"});
WriteResult({ "nInserted" : 1 })
> db.c5.find();
{ "_id" : ObjectId("5d5e7b310bccde4320cfbfaf"), "name" : "user1" }
{ "_id" : ObjectId("5d5e7b390bccde4320cfbfb0"), "name" : "user2" }
{ "_id" : ObjectId("5d5e7b3d0bccde4320cfbfb1"), "name" : "user3" }
{ "_id" : ObjectId("5d5e7b430bccde4320cfbfb2"), "name" : "user4" }
{ "_id" : ObjectId("5d5e7b4a0bccde4320cfbfb3"), "name" : "user5" }
{ "_id" : ObjectId("5d5e7c720bccde4320cfbfb4"), "name" : "zhangsan", "sex" : "male", "weight" : "160" }
{ "_id" : ObjectId("5d5e7ce60bccde4320cfbfb5"), "name" : "user6" }
{ "_id" : ObjectId("5d5e7ce60bccde4320cfbfb6"), "name" : "user6" }
我们发现多了一条数据,那“user6”都已经有了,怎么还能插入“user6”? 这是因为这两条“user6”的id不同,只要id不同,那么它们就不是相同的数据。
插入一条自定义id的数据!
> db.c5.save({_id:5, name:"user55"});
WriteResult({ "nMatched" : 0, "nUpserted" : 1, "nModified" : 0, "_id" : 5 })
> db.c5.find();
{ "_id" : ObjectId("5d5e7b310bccde4320cfbfaf"), "name" : "user1" }
{ "_id" : ObjectId("5d5e7b390bccde4320cfbfb0"), "name" : "user2" }
{ "_id" : ObjectId("5d5e7b3d0bccde4320cfbfb1"), "name" : "user3" }
{ "_id" : ObjectId("5d5e7b430bccde4320cfbfb2"), "name" : "user4" }
{ "_id" : ObjectId("5d5e7b4a0bccde4320cfbfb3"), "name" : "user5" }
{ "_id" : ObjectId("5d5e7c720bccde4320cfbfb4"), "name" : "zhangsan", "sex" : "male", "weight" : "160" }
{ "_id" : ObjectId("5d5e7ce60bccde4320cfbfb5"), "name" : "user6" }
{ "_id" : ObjectId("5d5e7d0a0bccde4320cfbfb6"), "name" : "user6" }
{ "_id" : 5, "name" : "user55" }
那么,我们再把刚才的语句执行一次,看看会怎么样?
> db.c5.save({_id:5, name:"user55"});
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 0 })
> db.c5.find();
{ "_id" : ObjectId("5d5e7b310bccde4320cfbfaf"), "name" : "user1" }
{ "_id" : ObjectId("5d5e7b390bccde4320cfbfb0"), "name" : "user2" }
{ "_id" : ObjectId("5d5e7b3d0bccde4320cfbfb1"), "name" : "user3" }
{ "_id" : ObjectId("5d5e7b430bccde4320cfbfb2"), "name" : "user4" }
{ "_id" : ObjectId("5d5e7b4a0bccde4320cfbfb3"), "name" : "user5" }
{ "_id" : ObjectId("5d5e7c720bccde4320cfbfb4"), "name" : "zhangsan", "sex" : "male", "weight" : "160" }
{ "_id" : ObjectId("5d5e7ce60bccde4320cfbfb5"), "name" : "user6" }
{ "_id" : ObjectId("5d5e7d0a0bccde4320cfbfb6"), "name" : "user6" }
{ "_id" : 5, "name" : "user55" }
我们发现,这次,却没有重复插入“user55”,为什么,因为id,如果id相同,save方法只会更改数据,而不会新插入数据!

二、删除数据

3、remove 删除数据

比如,我们删除c1集合
> db.c1.find();
{ "_id" : ObjectId("5d47e64862a767ca65d70324"), "name" : "LDR", "age" : "29" }
{ "_id" : ObjectId("5d47e7de62a767ca65d70325"), "name" : "SXL", "age" : "28", "gender" : "female", "home" : "TianShui" }
{ "_id" : ObjectId("5d47ea029db9b635a6868273"), "gender" : "male" }
>
>
> db.c1.remove();
2019-08-23T12:02:28.487+0800 E QUERY    [js] Error: remove needs a query :
DBCollection.prototype._parseRemove@src/mongo/shell/collection.js:362:1
DBCollection.prototype.remove@src/mongo/shell/collection.js:389:18
@(shell):1:1
报错了,这是为什么?

原来,删除整个文档的数据的时候,语法是db.c1.drop(),而并不是db.c1.remove()。remove是用来,有条件地删除数据。
> db.c2.insert({name:"A"});
WriteResult({ "nInserted" : 1 })
> db.c2.insert({name:"B"});
WriteResult({ "nInserted" : 1 })
> db.c2.insert({name:"C"});
WriteResult({ "nInserted" : 1 })
> db.c2.insert({name:"D"});
WriteResult({ "nInserted" : 1 })
> db.c2.insert({name:"E"});
WriteResult({ "nInserted" : 1 })
> db.c2.find();
{ "_id" : ObjectId("5d64dd96b390e1ab45fa854a"), "name" : "A" }
{ "_id" : ObjectId("5d64dd9bb390e1ab45fa854b"), "name" : "B" }
{ "_id" : ObjectId("5d64dda1b390e1ab45fa854c"), "name" : "C" }
{ "_id" : ObjectId("5d64dda6b390e1ab45fa854d"), "name" : "D" }
{ "_id" : ObjectId("5d64ddabb390e1ab45fa854e"), "name" : "E" }
> db.c2.remove();
2019-08-27T15:37:36.617+0800 E QUERY    [js] Error: remove needs a query :
DBCollection.prototype._parseRemove@src/mongo/shell/collection.js:362:1
DBCollection.prototype.remove@src/mongo/shell/collection.js:389:18
@(shell):1:1
> db.c2.drop();
true
> db.c2.find();
有条件地删除
> db.c2.find();
{ "_id" : ObjectId("5d64de8db390e1ab45fa854f"), "name" : "E" }
{ "_id" : ObjectId("5d64de95b390e1ab45fa8550"), "name" : "D" }
{ "_id" : ObjectId("5d64de9bb390e1ab45fa8551"), "name" : "C" }
{ "_id" : ObjectId("5d64dea3b390e1ab45fa8552"), "name" : "B" }
{ "_id" : ObjectId("5d64dea8b390e1ab45fa8553"), "name" : "A" }
> db.c2.remove({name:"B"});
WriteResult({ "nRemoved" : 1 })
> db.c2.find();
{ "_id" : ObjectId("5d64de8db390e1ab45fa854f"), "name" : "E" }
{ "_id" : ObjectId("5d64de95b390e1ab45fa8550"), "name" : "D" }
{ "_id" : ObjectId("5d64de9bb390e1ab45fa8551"), "name" : "C" }
{ "_id" : ObjectId("5d64dea8b390e1ab45fa8553"), "name" : "A" }

三、查找数据

4、find查询数据

a、查找某个“确切值”的数据
> db.c5.find();
{ "_id" : ObjectId("5d5e7b310bccde4320cfbfaf"), "name" : "user1" }
{ "_id" : ObjectId("5d5e7b390bccde4320cfbfb0"), "name" : "user2" }
{ "_id" : ObjectId("5d5e7b3d0bccde4320cfbfb1"), "name" : "user3" }
{ "_id" : ObjectId("5d5e7b430bccde4320cfbfb2"), "name" : "user4" }
{ "_id" : ObjectId("5d5e7b4a0bccde4320cfbfb3"), "name" : "user5" }
{ "_id" : ObjectId("5d5e7c720bccde4320cfbfb4"), "name" : "zhangsan", "sex" : "male", "weight" : "160" }
{ "_id" : ObjectId("5d5e7ce60bccde4320cfbfb5"), "name" : "user6" }
{ "_id" : ObjectId("5d5e7d0a0bccde4320cfbfb6"), "name" : "user6" }
{ "_id" : 5, "name" : "user55" }
{ "_id" : ObjectId("5d5f62cf8ee97b67104bcc89"), "name" : "Yixiantian", "post" : { "title" : "kungfu", "desc" : "BaChiQuan" } }
{ "_id" : ObjectId("5d5f64408ee97b67104bcc8a"), "name" : "YeWen", "student" : [ "Bruce Lee", "liang", "many" ] }
>
>
> db.c5.find({name:"user5"});
{ "_id" : ObjectId("5d5e7b4a0bccde4320cfbfb3"), "name" : "user5" }
>
b、根据条件,查询某一列的数据
> db.c5.find({weight:"160"}, {name:1,sex:1});
{ "_id" : ObjectId("5d5e7c720bccde4320cfbfb4"), "name" : "zhangsan", "sex" : "male" }
注意:【name:1】这里的1表示true。而我在指定显示字段的时候,并没有指定_id,但是,这里还是给我列了出来,这个是mongo的特性。

如果我不想要_id,怎么处理?
> db.c5.find({name:"Yixiantian"},{post:1, _id:0});
{ "post" : { "title" : "kungfu", "desc" : "BaChiQuan" } }
所以,当不想要_id字段,可以通过0,来隐藏它的显示。
c、条件表达式

批量插入一段数据:
> for(i=1;i<15;i++){
... db.c3.insert({name:"user"+i, age:i});
... }
WriteResult({ "nInserted" : 1 })
> db.c3.find();
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa8554"), "name" : "user1", "age" : 1 }
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa8555"), "name" : "user2", "age" : 2 }
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa8556"), "name" : "user3", "age" : 3 }
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa8557"), "name" : "user4", "age" : 4 }
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa8558"), "name" : "user5", "age" : 5 }
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa8559"), "name" : "user6", "age" : 6 }
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa855a"), "name" : "user7", "age" : 7 }
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa855b"), "name" : "user8", "age" : 8 }
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa855c"), "name" : "user9", "age" : 9 }
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa855d"), "name" : "user10", "age" : 10 }
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa855e"), "name" : "user11", "age" : 11 }
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa855f"), "name" : "user12", "age" : 12 }
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa8560"), "name" : "user13", "age" : 13 }
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa8561"), "name" : "user14", "age" : 14 }
查询年龄大于5的数据  $gt
> db.c3.find({age:{$gt:5}});
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa8559"), "name" : "user6", "age" : 6 }
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa855a"), "name" : "user7", "age" : 7 }
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa855b"), "name" : "user8", "age" : 8 }
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa855c"), "name" : "user9", "age" : 9 }
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa855d"), "name" : "user10", "age" : 10 }
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa855e"), "name" : "user11", "age" : 11 }
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa855f"), "name" : "user12", "age" : 12 }
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa8560"), "name" : "user13", "age" : 13 }
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa8561"), "name" : "user14", "age" : 14 }
查询年龄小于5的数据 $lt
> db.c3.find({age:{$lt:5}});
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa8554"), "name" : "user1", "age" : 1 }
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa8555"), "name" : "user2", "age" : 2 }
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa8556"), "name" : "user3", "age" : 3 }
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa8557"), "name" : "user4", "age" : 4 }
查询年龄大于等于5的数据  $gte
> db.c3.find({age:{$gte:5}});
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa8558"), "name" : "user5", "age" : 5 }
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa8559"), "name" : "user6", "age" : 6 }
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa855a"), "name" : "user7", "age" : 7 }
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa855b"), "name" : "user8", "age" : 8 }
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa855c"), "name" : "user9", "age" : 9 }
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa855d"), "name" : "user10", "age" : 10 }
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa855e"), "name" : "user11", "age" : 11 }
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa855f"), "name" : "user12", "age" : 12 }
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa8560"), "name" : "user13", "age" : 13 }
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa8561"), "name" : "user14", "age" : 14 }
查询年龄小于等于5的数据 $lte
> db.c3.find({age:{$lte:5}});
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa8554"), "name" : "user1", "age" : 1 }
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa8555"), "name" : "user2", "age" : 2 }
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa8556"), "name" : "user3", "age" : 3 }
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa8557"), "name" : "user4", "age" : 4 }
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa8558"), "name" : "user5", "age" : 5 }
5、count() 统计集合的总数
> db.c3.count();
14
> db.c3.find().count();
14
6、sort() 数据排序 (-1,降序;1,升序)
- 升序
> db.c3.find().sort({age:1});
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa8554"), "name" : "user1", "age" : 1 }
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa8555"), "name" : "user2", "age" : 2 }
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa8556"), "name" : "user3", "age" : 3 }
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa8557"), "name" : "user4", "age" : 4 }
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa8558"), "name" : "user5", "age" : 5 }
-降序
> db.c3.find().sort({age:-1});
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa8558"), "name" : "user5", "age" : 5 }
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa8557"), "name" : "user4", "age" : 4 }
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa8556"), "name" : "user3", "age" : 3 }
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa8555"), "name" : "user2", "age" : 2 }
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa8554"), "name" : "user1", "age" : 1 }
7、limit() skip()分页查询
> db.c3.find().limit(5);
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa8554"), "name" : "user1", "age" : 1 }
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa8555"), "name" : "user2", "age" : 2 }
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa8556"), "name" : "user3", "age" : 3 }
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa8557"), "name" : "user4", "age" : 4 }
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa8558"), "name" : "user5", "age" : 5 }

> db.c3.find().skip(1).limit(5);
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa8555"), "name" : "user2", "age" : 2 }
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa8556"), "name" : "user3", "age" : 3 }
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa8557"), "name" : "user4", "age" : 4 }
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa8558"), "name" : "user5", "age" : 5 }
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa8559"), "name" : "user6", "age" : 6 }

> db.c3.find().skip(3).limit(6);
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa8557"), "name" : "user4", "age" : 4 }
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa8558"), "name" : "user5", "age" : 5 }
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa8559"), "name" : "user6", "age" : 6 }
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa855a"), "name" : "user7", "age" : 7 }
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa855b"), "name" : "user8", "age" : 8 }
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa855c"), "name" : "user9", "age" : 9 }
跳过5个,取6个,降序排列(先取后排序)
> db.c3.find().skip(5).limit(5).sort({age:-1});
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa855c"), "name" : "user9", "age" : 9 }
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa855b"), "name" : "user8", "age" : 8 }
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa855a"), "name" : "user7", "age" : 7 }
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa8559"), "name" : "user6", "age" : 6 }
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa8558"), "name" : "user5", "age" : 5 }
>
降序排列,跳过5个,取6个(先排序后取)
> db.c3.find().sort({age:-1}).skip(9).limit(5);
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa8558"), "name" : "user5", "age" : 5 }
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa8557"), "name" : "user4", "age" : 4 }
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa8556"), "name" : "user3", "age" : 3 }
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa8555"), "name" : "user2", "age" : 2 }
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa8554"), "name" : "user1", "age" : 1 }
带条件的统计 count()  (0,忽略条件;1,带条件)
> db.c3.find().sort({age:-1}).skip(2).limit(2).count(0);
14
这里统计的不对!为什么,count条件为0时,表示忽略中间的条件,只对集合进行统计。所以,这里的参数得传1,才行:
> db.c3.find().sort({age:-1}).skip(2).limit(2).count(1);
2
8、$all 包含
{ "_id" : ObjectId("5d64ec94350ff605d7b5549b"), "name" : "superMan", "post" : [ 1, 3, 5, 7, 9 ] }
> db.c3.find({post:{$all:[1,3,4]}});

> db.c3.find({post:{$all:[1,3,5,7]}});
{ "_id" : ObjectId("5d64ec94350ff605d7b5549b"), "name" : "superMan", "post" : [ 1, 3, 5, 7, 9 ] }
> db.c3.find({post:{$all:[1,3,5,9]}});
{ "_id" : ObjectId("5d64ec94350ff605d7b5549b"), "name" : "superMan", "post" : [ 1, 3, 5, 7, 9 ] }
> db.c3.find({post:{$all:[1,3,5,7,9]}});
{ "_id" : ObjectId("5d64ec94350ff605d7b5549b"), "name" : "superMan", "post" : [ 1, 3, 5, 7, 9 ] }
9、$exists 检查一个字段是否存在
- 存在某个字段的数据 1
> db.c5.find();
{ "_id" : ObjectId("5d5e7b310bccde4320cfbfaf"), "name" : "user1" }
{ "_id" : ObjectId("5d5e7b390bccde4320cfbfb0"), "name" : "user2" }
{ "_id" : ObjectId("5d5e7b3d0bccde4320cfbfb1"), "name" : "user3" }
{ "_id" : ObjectId("5d5e7b430bccde4320cfbfb2"), "name" : "user4" }
{ "_id" : ObjectId("5d5e7b4a0bccde4320cfbfb3"), "name" : "user5" }
{ "_id" : ObjectId("5d5e7c720bccde4320cfbfb4"), "name" : "zhangsan", "sex" : "male", "weight" : "160" }
{ "_id" : ObjectId("5d5e7ce60bccde4320cfbfb5"), "name" : "user6" }
{ "_id" : ObjectId("5d5e7d0a0bccde4320cfbfb6"), "name" : "user6" }
{ "_id" : 5, "name" : "user55" }
{ "_id" : ObjectId("5d5f62cf8ee97b67104bcc89"), "name" : "Yixiantian", "post" : { "title" : "kungfu", "desc" : "BaChiQuan" } }
{ "_id" : ObjectId("5d5f64408ee97b67104bcc8a"), "name" : "YeWen", "student" : [ "Bruce Lee", "liang", "many" ] }
>
>
> db.c5.find({sex:{$exists:1}});
{ "_id" : ObjectId("5d5e7c720bccde4320cfbfb4"), "name" : "zhangsan", "sex" : "male", "weight" : "160" }
- 不存在某个字段的数据 0
> db.c5.find({sex:{$exists:0}});
{ "_id" : ObjectId("5d5e7b310bccde4320cfbfaf"), "name" : "user1" }
{ "_id" : ObjectId("5d5e7b390bccde4320cfbfb0"), "name" : "user2" }
{ "_id" : ObjectId("5d5e7b3d0bccde4320cfbfb1"), "name" : "user3" }
{ "_id" : ObjectId("5d5e7b430bccde4320cfbfb2"), "name" : "user4" }
{ "_id" : ObjectId("5d5e7b4a0bccde4320cfbfb3"), "name" : "user5" }
{ "_id" : ObjectId("5d5e7ce60bccde4320cfbfb5"), "name" : "user6" }
{ "_id" : ObjectId("5d5e7d0a0bccde4320cfbfb6"), "name" : "user6" }
{ "_id" : 5, "name" : "user55" }
{ "_id" : ObjectId("5d5f62cf8ee97b67104bcc89"), "name" : "Yixiantian", "post" : { "title" : "kungfu", "desc" : "BaChiQuan" } }
{ "_id" : ObjectId("5d5f64408ee97b67104bcc8a"), "name" : "YeWen", "student" : [ "Bruce Lee", "liang", "many" ] }
>
注意:不存在是0,而不是-1,切记!!!
10、$mod 取余

-age字段模2余0
> db.c3.find({age:{$mod:[2,0]}});
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa8555"), "name" : "user2", "age" : 2 }
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa8557"), "name" : "user4", "age" : 4 }
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa8559"), "name" : "user6", "age" : 6 }
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa855b"), "name" : "user8", "age" : 8 }
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa855d"), "name" : "user10", "age" : 10 }
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa855f"), "name" : "user12", "age" : 12 }
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa8561"), "name" : "user14", "age" : 14 }
-age字段模2余1
> db.c3.find({age:{$mod:[2,1]}});
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa8554"), "name" : "user1", "age" : 1 }
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa8556"), "name" : "user3", "age" : 3 }
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa8558"), "name" : "user5", "age" : 5 }
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa855a"), "name" : "user7", "age" : 7 }
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa855c"), "name" : "user9", "age" : 9 }
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa855e"), "name" : "user11", "age" : 11 }
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa8560"), "name" : "user13", "age" : 13 }
11、$ne 不等于

-age不等于4
>db.c3.find({age:{$ne:4}});
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa8554"), "name" : "user1", "age" : 1 }
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa8555"), "name" : "user2", "age" : 2 }
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa8556"), "name" : "user3", "age" : 3 }
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa8558"), "name" : "user5", "age" : 5 }
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa8559"), "name" : "user6", "age" : 6 }
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa855a"), "name" : "user7", "age" : 7 }
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa855b"), "name" : "user8", "age" : 8 }
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa855c"), "name" : "user9", "age" : 9 }
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa855d"), "name" : "user10", "age" : 10 }
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa855e"), "name" : "user11", "age" : 11 }
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa855f"), "name" : "user12", "age" : 12 }
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa8560"), "name" : "user13", "age" : 13 }
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa8561"), "name" : "user14", "age" : 14 }
{ "_id" : ObjectId("5d64ec94350ff605d7b5549b"), "name" : "superMan", "post" : [ 1, 3, 5, 7, 9 ] }
-年龄不等于1和14的
>db.c3.find({age:{$ne:[1,14]}});
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa8554"), "name" : "user1", "age" : 1 }
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa8555"), "name" : "user2", "age" : 2 }
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa8556"), "name" : "user3", "age" : 3 }
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa8558"), "name" : "user5", "age" : 5 }
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa8559"), "name" : "user6", "age" : 6 }
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa855a"), "name" : "user7", "age" : 7 }
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa855b"), "name" : "user8", "age" : 8 }
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa855c"), "name" : "user9", "age" : 9 }
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa855d"), "name" : "user10", "age" : 10 }
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa855e"), "name" : "user11", "age" : 11 }
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa855f"), "name" : "user12", "age" : 12 }
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa8560"), "name" : "user13", "age" : 13 }
{ "_id" : ObjectId("5d64e2e9b390e1ab45fa8561"), "name" : "user14", "age" : 14 }
{ "_id" : ObjectId("5d64ec94350ff605d7b5549b"), "name" : "superMan", "post" : [ 1, 3, 5, 7, 9 ] }
注意:这种写法是错的!不等于只能有一个数值,不能是数组!
发布了59 篇原创文章 · 获赞 2 · 访问量 5578

猜你喜欢

转载自blog.csdn.net/LDR1109/article/details/102612502