• 为了保证你在浏览本网站时有着更好的体验,建议使用类似Chrome、Firefox之类的浏览器~~
    • 如果你喜欢本站的内容何不Ctrl+D收藏一下呢,与大家一起分享各种编程知识~
    • 本网站研究机器学习、计算机视觉、模式识别~当然不局限于此,生命在于折腾,何不年轻时多折腾一下

mongodb查询之数组查询

Sql admin 2年前 (2018-05-25) 716次浏览 0个评论 扫描二维码

1、$all

一般情况下数组中会有多个元素,使用 all 可以给出多个元素查询条件,对应的文档要全部包含查询条件中的数据才是匹配的文档。

db.test.find({"fruit":{"$all":["apple","banana"]}})

{ 
    "_id" : ObjectId("5b08184f3ba23b5c3e762812"), 
    "fruit" : [
        "apple", 
        "banana", 
        "watermelon"
    ]
}

上面是使用了 all 关键词,要是你使用下面的语句是查询不到 数据的

db.test.find({"fruit":["apple","banana"]})

上面的语句全匹配查询,只有是[“apple”,”banana”]的文档才会被查询出来,这一点要对比理解清楚。

2、$size

根据上面的这个单词就可以发现是想要查出符合当前长度的文档

db.test.find({"fruit":{"$size":3}})

{ 
    "_id" : ObjectId("5b08184f3ba23b5c3e762812"), 
    "fruit" : [
        "apple", 
        "banana", 
        "watermelon"
    ]
}

3、$slice

在之前的数组插入中我们已经使用过 slice 这个操作符了,当时是往数组里插入元素,但是只要保留指定长度的数据,使用到了 slice,现在在查询这里我们可以使用这个切片返回指定数量的数据

db.test.find({"_id" : ObjectId("5b08184f3ba23b5c3e762812")},{"fruit":{"$slice":2}})

{ 
    "_id" : ObjectId("5b08184f3ba23b5c3e762812"), 
    "fruit" : [
        "apple", 
        "banana"
    ]
}

要注意了,不能直接查询数组并返回的,要知道先匹配文档然后取出数组的前两位数据。

4、数组范围查询$elemMatch

一眼看上去就是对每一个元素使用某种条件来筛选,需要注意的是这个操作符只对数组有用,非数组无法使用

db.test.find({"ff":{"$elemMatch":{"$gte":5}}})

{ 
    "_id" : ObjectId("5b081f273ba23b5c3e762813"), 
    "ff" : [
        10.0, 
        20.0, 
        30.0
    ]
}


Deeplearn, 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明mongodb 查询之数组查询
喜欢 (0)
admin
关于作者:
互联网行业码农一枚/业余铲屎官/数码影音爱好者/二次元

您必须 登录 才能发表评论!