查找与MongoDB中相同数组元素匹配的文档

时间:2015-11-16 02:45:13

标签: mongodb mongodb-query

想想MongoDB中的这些文档:

{id:1, people:['james', 'john', 'candy']}
{id:2, people:['james', 'john', 'candy', 'gary']}

无论数组元素的顺序如何,如何找到仅与完整集数组元素匹配的文档。

例如,如果我输入:

input=[ 'candy', 'james', 'john' ]

匹配的响应应该是文档id:1

如果我有任何其他文件完全相同的3个人,无论他们在MongoDB people数组中的顺序如何,它也应该匹配。

我已尝试$all,但这不起作用。

2 个答案:

答案 0 :(得分:2)

您可以使用$size来限制数组的大小:

db.test.find({
   "people": { $all: [ 'james', 'john', 'candy' ], $size: 3 }
})

答案 1 :(得分:0)

作为您问题的解决方案,请尝试在mongodb中执行以下查询。

db.getCollection('collection').find({"people":{$all:[ 'james', 'john', 'candy' ]}})

上述查询将执行数组元素的精确匹配,无论其顺序如何