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