1

我有一个像

{ arr:[1] }
{ arr:[1,2] }
{ arr:[1,2,3] }

我有一个搜索数组。

[1,2]

所以我想找到作为搜索数组子集的所有文档或匹配它。

这里的查询应该返回

{ arr:[1] }
{ arr:[1,2] }
4

1 回答 1

0

完全匹配:db.collection.find({ $or: [ {arr: [1,2] }, { arr:[1]} ] })

如果您添加计算 arr 元素数量的附加字段,如下所示:

{ arr:[1], cnt: 1 }
{ arr:[1,2], cnt: 2 }
{ arr:[1,2,3], cnt: 3 }

你可以使用这个查询:db.collection.find({ arr: { $in: [1,2] }, cnt: {$in:[1,2]} })

最后一种情况下的下一个示例:db.collection.find({ arr: { $in: [1,2,3] }, cnt: {$in:[2,3]} })将输出:

{ "cnt" : 2, "arr" : [  1,  2 ] }
{ "cnt" : 3, "arr" : [  1,  2,  3 ] }
于 2013-09-11T22:05:35.177 回答