MongoDB找到一个数组,它是查询数组的一个子集

时间:2013-09-11 20:38:10

标签: arrays mongodb subset

我有一个像

这样的集合
{ arr:[1] }
{ arr:[1,2] }
{ arr:[1,2,3] }

我有一个搜索数组。

[1,2]

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

这里的查询应该返回

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

1 个答案:

答案 0 :(得分: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 ] }