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

时间:2015-01-14 18:16:50

标签: mongodb-query

我有

的集合
{array:[1,2,3]},
{array:[1,2,4]},
{array:[2,1,2]} 

如何返回数组所有的对象

[1,2,*anyNumber]

获得结果

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

1 个答案:

答案 0 :(得分:1)

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

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

但是,这也将返回索引3中没有元素的文档。如果要存在第三个元素,请使用:

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

此外,这将返回长度可以大于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]}})