我有一个像
这样的集合{ arr:[1] }
{ arr:[1,2] }
{ arr:[1,2,3] }
我有一个搜索数组。
[1,2]
所以我想找到所有搜索数组子集的文档或匹配它。
这里的查询应该返回
{ arr:[1] }
{ arr:[1,2] }
答案 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 ] }