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]}})
我有 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]}})