您好,欢迎访问一九零五行业门户网

mongodb入门-7查询2

mongodb入门-7查询2 数组查询$all $in $all 数组中必须包含所有给定的查询的元素 $in 数组中只要包含给定的查询元素就可以 下面看两个代码: [html] db.phone.find() { _id : objectid(5198e20220c9b0dc40419385), num : [ 1, 2, 3 ] } { _id : objectid(519
mongodb入门-7查询2
数组查询$all $in
$all 数组中必须包含所有给定的查询的元素
$in 数组中只要包含给定的查询元素就可以
下面看两个代码:
[html] 
> db.phone.find()  
{ _id : objectid(5198e20220c9b0dc40419385), num : [ 1, 2, 3 ] }  
{ _id : objectid(5198e21820c9b0dc40419386), num : [ 4, 2, 3 ] }  
{ _id : objectid(5198e22120c9b0dc40419387), num : [ 1, 2, 5 ] }  
> db.phone.find({num:{$all:[1,2]}})  
{ _id : objectid(5198e20220c9b0dc40419385), num : [ 1, 2, 3 ] }  
{ _id : objectid(5198e22120c9b0dc40419387), num : [ 1, 2, 5 ] }  
> db.phone.find({num:{$all:[1,4]}}) --->同时包含1,4的没有数据  
> db.phone.find({num:{$in:[1,4]}}) --->包含1或4的数据  
{ _id : objectid(5198e20220c9b0dc40419385), num : [ 1, 2, 3 ] }  
{ _id : objectid(5198e21820c9b0dc40419386), num : [ 4, 2, 3 ] }  
{ _id : objectid(5198e22120c9b0dc40419387), num : [ 1, 2, 5 ] }
$exists 查找包含该字段的文档
一段代码如下:
[html] 
> db.phone.find()  
{ _id : objectid(5198e20220c9b0dc40419385), num : [ 1, 2, 3 ] }  
{ _id : objectid(5198e21820c9b0dc40419386), num : [ 4, 2, 3 ] }  
{ _id : objectid(5198e22120c9b0dc40419387), num : [ 1, 2, 5 ] }  
{ _id : objectid(5198e51a20c9b0dc40419388), state : 1 }  
> db.phone.find({state:{$exists:1}}) --->存在state字段的  
{ _id : objectid(5198e51a20c9b0dc40419388), state : 1 }  
> db.phone.find({state:{$exists:0}}) --->不存在state字段的文档  
{ _id : objectid(5198e20220c9b0dc40419385), num : [ 1, 2, 3 ] }  
{ _id : objectid(5198e21820c9b0dc40419386), num : [ 4, 2, 3 ] }  
{ _id : objectid(5198e22120c9b0dc40419387), num : [ 1, 2, 5 ] }
$mod 取模操作
比如我们可以取一些数据的时候做一些模操作,比如向下面一样取年龄模3余1的文档:
[html] 
> db.user.find()  
{ _id : objectid(5198c286c686eb50e2c843b2), name : user0, age : 0 }  
{ _id : objectid(5198c286c686eb50e2c843b3), name : user1, age : 1 }  
{ _id : objectid(5198c286c686eb50e2c843b4), name : user2, age : 2 }  
{ _id : objectid(5198c286c686eb50e2c843b5), name : user3, age : 3 }  
{ _id : objectid(5198c286c686eb50e2c843b6), name : user4, age : 4 }  
{ _id : objectid(5198c286c686eb50e2c843b7), name : user5, age : 5 }  
{ _id : objectid(5198c286c686eb50e2c843b8), name : user6, age : 6 }  
{ _id : objectid(5198c286c686eb50e2c843b9), name : user7, age : 7 }  
{ _id : objectid(5198c286c686eb50e2c843ba), name : user8, age : 8 }  
{ _id : objectid(5198c286c686eb50e2c843bb), name : user9, age : 9 }  
{ _id : objectid(5198c286c686eb50e2c843bc), name : user10, age : 10 }  
{ _id : objectid(5198c3cac686eb50e2c843bd), name : user0, age : 20 }  
> db.user.find({age:{$mod:[3,1]}})   
{ _id : objectid(5198c286c686eb50e2c843b3), name : user1, age : 1 }  
{ _id : objectid(5198c286c686eb50e2c843b6), name : user4, age : 4 }  
{ _id : objectid(5198c286c686eb50e2c843b9), name : user7, age : 7 }  
{ _id : objectid(5198c286c686eb50e2c843bc), name : user10, age : 10 }
同样使用 db.user.find(this.age%3==1)这个语句也能达到上面的效果,但是不推荐.
$ne not equal 不等于
查找age不等于0的用户:
[html] 
> db.user.find()  
{ _id : objectid(5198c286c686eb50e2c843b2), name : user0, age : 0 }  
{ _id : objectid(5198c286c686eb50e2c843b3), name : user1, age : 1 }  
{ _id : objectid(5198c286c686eb50e2c843b4), name : user2, age : 2 }  
{ _id : objectid(5198c286c686eb50e2c843b5), name : user3, age : 3 }  
{ _id : objectid(5198c286c686eb50e2c843b6), name : user4, age : 4 }  
{ _id : objectid(5198c286c686eb50e2c843b7), name : user5, age : 5 }  
{ _id : objectid(5198c286c686eb50e2c843b8), name : user6, age : 6 }  
{ _id : objectid(5198c286c686eb50e2c843b9), name : user7, age : 7 }  
{ _id : objectid(5198c286c686eb50e2c843ba), name : user8, age : 8 }  
{ _id : objectid(5198c286c686eb50e2c843bb), name : user9, age : 9 }  
{ _id : objectid(5198c286c686eb50e2c843bc), name : user10, age : 10 }  
{ _id : objectid(5198c3cac686eb50e2c843bd), name : user0, age : 20 }  
> db.user.find({age:{$ne:0}})  
{ _id : objectid(5198c286c686eb50e2c843b3), name : user1, age : 1 }  
{ _id : objectid(5198c286c686eb50e2c843b4), name : user2, age : 2 }  
{ _id : objectid(5198c286c686eb50e2c843b5), name : user3, age : 3 }  
{ _id : objectid(5198c286c686eb50e2c843b6), name : user4, age : 4 }  
{ _id : objectid(5198c286c686eb50e2c843b7), name : user5, age : 5 }  
{ _id : objectid(5198c286c686eb50e2c843b8), name : user6, age : 6 }  
{ _id : objectid(5198c286c686eb50e2c843b9), name : user7, age : 7 }  
{ _id : objectid(5198c286c686eb50e2c843ba), name : user8, age : 8 }  
{ _id : objectid(5198c286c686eb50e2c843bb), name : user9, age : 9 }  
{ _id : objectid(5198c286c686eb50e2c843bc), name : user10, age : 10 }  
{ _id : objectid(5198c3cac686eb50e2c843bd), name : user0, age : 20 }
上面所说的$开头的方法有些人把它称为魔术方法,这个倒是无所谓,这种方法一般都是欠他在json里面,也就是一般都是在{}中使用,并且这个还是作为一个字段的值.以后会接触到不这样使用的.
其它类似信息

推荐信息