using mongodb advanced command 3

本文介绍了MongoDB中的一些高级查询命令,包括使用$in和$nin进行条件筛选、使用$or和$nor进行复合条件查询、按长度筛选以及使用正则表达式等技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文章来自我的博客:https://www.lwxshow.com/db/mongo/using-mongodb-advanced-command-3.html

mongodb高级命令3

#$in 在条件范围内

例:

db.cuser.find({age:{$in:[3,5]}});
{ "_id" : ObjectId("51a23348ea214a8ee3204de3"), "name" : "userid_3", "pwd" : "pwd_3", "age" : 3 }
{ "_id" : ObjectId("51a23348ea214a8ee3204de5"), "name" : "userid_5", "pwd" : "pwd_5", "age" : 5 }

#$nin不在条件范围内的

例:

db.cuser.find({age:{$nin:[3,5]}});


#并且的条件 

例:

db.cuser.find({name:"userid_2",age:2});

db.cuser.find($or:[{name:"userid_1"},{name:"userid_2"}]);
Mon May 27 01:21:22.872 JavaScript execution failed: SyntaxError: Unexpected token :
> db.cuser.find({$or:[{name:"userid_1"},{name:"userid_2"}]});
{ "_id" : ObjectId("51a23348ea214a8ee3204de2"), "name" : "userid_2", "pwd" : "pwd_2", "age" : 2 }
{ "_id" : ObjectId("51a23b98ea214a8ee3204de9"), "name" : "userid_1" }
{ "_id" : ObjectId("51a23348ea214a8ee3204de1"), "age" : 1, "name" : "userid_1", "post" : [ 1, 2, 3, 4, 5 ], "pwd" : "pwd_1" }
{ "_id" : ObjectId("51a23ce4ea214a8ee3204dea"), "name" : "userid_2" }

#or与 nor

db.cuser.find($or:[{name:"userid_1"},{name:"userid_2"}]);
Mon May 27 01:21:22.872 JavaScript execution failed: SyntaxError: Unexpected token :
> db.cuser.find({$or:[{name:"userid_1"},{name:"userid_2"}]});
{ "_id" : ObjectId("51a23348ea214a8ee3204de2"), "name" : "userid_2", "pwd" : "pwd_2", "age" : 2 }
{ "_id" : ObjectId("51a23b98ea214a8ee3204de9"), "name" : "userid_1" }
{ "_id" : ObjectId("51a23348ea214a8ee3204de1"), "age" : 1, "name" : "userid_1", "post" : [ 1, 2, 3, 4, 5 ], "pwd" : "pwd_1" }
{ "_id" : ObjectId("51a23ce4ea214a8ee3204dea"), "name" : "userid_2" }


 db.cuser.find({$or:[{name:"userid_1"},{age:2}]});
{ "_id" : ObjectId("51a23348ea214a8ee3204de2"), "name" : "userid_2", "pwd" : "pwd_2", "age" : 2 }
{ "_id" : ObjectId("51a23b98ea214a8ee3204de9"), "name" : "userid_1" }
{ "_id" : ObjectId("51a23348ea214a8ee3204de1"), "age" : 1, "name" : "userid_1", "post" : [ 1, 2, 3, 4, 5 ], "pwd" : "pwd_1" }


nor 例子

 db.cuser.find({$nor:[{name:"userid_1"},{name:"userid_2"},{name:"userid_3"}]});

{ "_id" : ObjectId("51a23348ea214a8ee3204de4"), "name" : "userid_4", "pwd" : "pwd_4", "age" : 4 }
{ "_id" : ObjectId("51a23348ea214a8ee3204de5"), "name" : "userid_5", "pwd" : "pwd_5", "age" : 5 }
{ "_id" : ObjectId("51a23348ea214a8ee3204de6"), "name" : "userid_6", "pwd" : "pwd_6", "age" : 6 }
{ "_id" : ObjectId("51a23348ea214a8ee3204de7"), "name" : "userid_7", "pwd" : "pwd_7", "age" : 7 }
{ "_id" : ObjectId("51a23348ea214a8ee3204de8"), "name" : "userid_8", "pwd" : "pwd_8", "age" : 8 }

 db.cuser.find({$nor:[{name:"userid_1"},{age:2}]});

#按长度筛选查询

db.cuser.find({post:{$size:5}});
{ "_id" : ObjectId("51a23348ea214a8ee3204de1"), "age" : 1, "name" : "userid_1", "post" : [ 1, 2, 3, 4, 5 ], "pwd" : "pwd_1" }

#正则表达式


#子对象查询

db.cuser2.find({post:{$elemMatch:{title:"titl21"}}});
{ "_id" : ObjectId("51a249f6849ea7d4e0735d37"), "name" : "userid_8", "pwd" : "pwd9", "post" : [ { "title" : "titl21", "contents" : "this 1" }, { "title" : "titl22", "contents" : "this is 2" } ] }

#null 值为null,或字段不存在

方法1:

db.cuser2.find({age:{$exists:1,$in:[null]}});
{ "_id" : ObjectId("51a24e45849ea7d4e0735d38"), "name" : "userid_5", "pwd" : "pwd5", "post" : [ { "title" : "titl5", "contents" : "this 5" }, { "title" : "titl52", "contents" : "this is 632" } ], "age" : null }
{ "_id" : ObjectId("51a24e58849ea7d4e0735d39"), "name" : "userid_4", "pwd" : "pwd6", "post" : [ { "title" : "titl6", "contents" : "this 6" }, { "title" : "titl62", "contents" : "this is 622" } ], "age" : null }


db.cuser2.find({age:{$type:10},name:"userid_4"});
{ "_id" : ObjectId("51a24e58849ea7d4e0735d39"), "name" : "userid_4", "pwd" : "pwd6", "post" : [ { "title" : "titl6", "contents" : "this 6" }, { "title" : "titl62", "contents" : "this is 622" } ], "age" : null }


方法2:

db.cuser2.find({age:{$type:10}});

转载于:https://my.oschina.net/xshow/blog/135401

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值