设为首页 收藏本站
查看: 1416|回复: 0

[经验分享] 【MongoDB学习笔记17】MongoDB的查询:find中的数组查询

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-1-6 08:46:22 | 显示全部楼层 |阅读模式
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
db.post.find()   
{ "_id" : ObjectId("54a530c3ff0df3732bac1681"), "id" : 2, "name" : "joe", "age" : 30, "sex" : 1, "school" : "marry" }   
{ "_id" : ObjectId("54a530c3ff0df3732bac1680"), "id" : 1, "name" : "joe", "age" : 30, "comments" : [ "test2", "test9", "test5" ], "sex" : 1, "school" : "marry" }   
{ "_id" : ObjectId("54a9700e1b5afd45354fd086"), "id" : 3, "test3" : 3 }   
{ "_id" : ObjectId("54a9701c1b5afd45354fd087"), "id" : 4, "test4" : 4 }   
{ "_id" : ObjectId("54a970281b5afd45354fd088"), "id" : 5, "test5" : 5 }   
{ "_id" : ObjectId("54a970351b5afd45354fd089"), "id" : 6, "test6" : 6 }   
{ "_id" : ObjectId("54a970781b5afd45354fd08a"), "id" : 7, "test7" : 7 }   
{ "_id" : ObjectId("54a970831b5afd45354fd08b"), "id" : 8, "test8" : 8 }   
{ "_id" : ObjectId("54a970901b5afd45354fd08c"), "id" : 9, "test9" : 9 }   
{ "_id" : ObjectId("54a9709c1b5afd45354fd08d"), "id" : 10, "test10" : 10 }   
{ "_id" : ObjectId("54aa8a90652d8bdfa0566d34"), "id" : 11, "test10" : 11 }   
{ "_id" : ObjectId("54aa97b894dcf31069b590ca"), "id" : 12, "fruit" : [ "apple", "banana", "peach" ] }   
{ "_id" : ObjectId("54aa97d794dcf31069b590cb"), "id" : 13, "fruit" : [ "apple", "kumquat", "orange" ] }   
{ "_id" : ObjectId("54aa97f294dcf31069b590cc"), "id" : 14, "fruit" : [ "cherry", "banana", "apple" ] }   
>


一、$all来匹配数组中的一组元素
1
2
3
4
> db.post.find({"fruit":{$all:["apple","banana"]}})   
{ "_id" : ObjectId("54aa97b894dcf31069b590ca"), "id" : 12, "fruit" : [ "apple", "banana", "peach" ] }   
{ "_id" : ObjectId("54aa97f294dcf31069b590cc"), "id" : 14, "fruit" : [ "cherry", "banana", "apple" ] }   
>



可以看到apple和banana的顺序无关系;

二、$size来查询匹配的数组长度;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
> db.post.find({},{"id":1,"fruit":1,"_id":0})   
{ "id" : 2 }   
{ "id" : 1 }   
{ "id" : 3 }   
{ "id" : 4 }   
{ "id" : 5 }   
{ "id" : 6 }   
{ "id" : 7 }   
{ "id" : 8 }   
{ "id" : 9 }   
{ "id" : 10 }   
{ "id" : 11 }   
{ "id" : 12, "fruit" : [ "apple", "banana", "peach" ] }   
{ "id" : 13, "fruit" : [ "apple", "kumquat", "orange", "fruit01" ] }   
{  }   
>
> db.post.find({"fruit":{$size:3}})   
{ "_id" : ObjectId("54aa97b894dcf31069b590ca"), "id" : 12, "fruit" : [ "apple", "banana", "peach" ] }   
>



三、$slice操作符
1
2
3
> db.post.find({"id":13})   
{ "_id" : ObjectId("54aa97d794dcf31069b590cb"), "id" : 13, "fruit" : [ "apple", "kumquat", "orange", "fruit01" ] }   
>




返回数组前两个值   

1
2
3
> db.post.find({"id":13},{"fruit":{$slice:2}})   
{ "_id" : ObjectId("54aa97d794dcf31069b590cb"), "id" : 13, "fruit" : [ "apple", "kumquat" ] }   
>



  
返回数组的后两个值

1
2
3
> db.post.find({"id":13},{"fruit":{$slice:-2}})   
{ "_id" : ObjectId("54aa97d794dcf31069b590cb"), "id" : 13, "fruit" : [ "orange", "fruit01" ] }   
>



返回数组中间的两个值
1
2
> db.post.find({"id":13},{"fruit":{$slice:[1,2]}})   
{ "_id" : ObjectId("54aa97d794dcf31069b590cb"), "id" : 13, "fruit" : [ "kumquat", "orange" ] }



四、利用数组下表查询

1
2
3
4
5
> db.post.find({"fruit.3":"fruit01"})
{ "_id" :
ObjectId("54aa97d794dcf31069b590cb"), "id" : 13, "fruit" : [ "apple", "kumquat",
"orange", "fruit01" ] }
>



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-40281-1-1.html 上篇帖子: 【MongoDB学习笔记16】MongoDB的查询:find中的正则表达式 下篇帖子: MongoDB Sharding学习理论篇
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表