我有
的集合{array:[1,2,3]},
{array:[1,2,4]},
{array:[2,1,2]}
如何返回数组所有的对象
[1,2,*anyNumber]
获得结果
{array:[1,2,3]},
{array:[1,2,4]},
答案 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]}})