Javascript 在Mongo中,如何将集合的所有项与更大的数组进行匹配?
假设我在一个集合中有3个项目:Javascript 在Mongo中,如何将集合的所有项与更大的数组进行匹配?,javascript,mongodb,Javascript,Mongodb,假设我在一个集合中有3个项目: [ { id: 'a', items: [1, 2, 3] }, { id: 'b', items: [4, 5, 6] }, { id: 'c', items: [7, 8, 9] } ] 在JavaScript代码方面,我只有一个数组[5、2、6、4、7、8]。由于我的数组包含其项数组的所有元素(4、5和6),如何组合查询以仅从集合
[
{
id: 'a',
items: [1, 2, 3]
}, {
id: 'b',
items: [4, 5, 6]
}, {
id: 'c',
items: [7, 8, 9]
}
]
在JavaScript代码方面,我只有一个数组[5、2、6、4、7、8]
。由于我的数组包含其项数组的所有元素(4、5和6),如何组合查询以仅从集合中选择第二个对象?使用mongoDB可以筛选数组。首先找出给定数组和实际数据库数组的交集,然后使用set equals方法。检查以下查询:
db.collectionName.aggregate({
"$project": {
"checkAllElem": {
"$setEquals": [{
"$setIntersection": ["$items", [5, 2, 6, 4, 7, 8]]
}, "$items"]
},
"items": 1
}
}, {
"$match": {
"checkAllElem": true
}
})
在这种情况下,纯javascript解决方案可以接受吗?我正在寻找一个Mongo查询,因为我给出的集合很小,db有数百万个文档。可能是Thank you Though@Yogesh的副本!这是完美的:)