共计 948 个字符,预计需要花费 3 分钟才能阅读完成。
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
]
}
正文完
请博主喝杯咖啡吧!