mongodb 中的查询数组特定数组元素

query array particular array elements in mongodb

我有 collection 个

{array:[1,2,3]},
{array:[1,2,4]},
{array:[2,1,2]} 

如何 return 所有 objects 其中数组有

[1,2,*anyNumber]

得到结果

{array:[1,2,3]},
{array:[1,2,4]},

如果您希望顺序完全相同,即第一个元素为 1,第二个元素为 2,则使用

db.coll.find({"array.0": 1, "array.1": 2})

但是,这也会 return 记录索引 3 处没有元素的位置。如果您希望出现第三个元素,请使用此:

db.coll.find({"array.0": 1, "array.1": 2, "array.2": {"$exists": true}})

此外,这将 return 长度可以大于 3 的数组。如果您专门查找长度仅为 3 的数组,那么您可以使用 $where 来检查长度

db.coll.find({"array.0": 1, "array.1": 2, "array.2": {"$exists": true}, $where:'this.array.length==3'})

如果这很复杂并且您只是在查找数组包含 1 和 2 的文档,而不管顺序如何以及是否存在第三个元素,那么只需使用:

db.coll.find({"array": {"$all": [1,2]}})