假设我在一个集合中有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]
。我如何编写查询以仅从集合中选择第二个对象,因为我的数组包含其items
数组的所有元素(4,5和6)?
答案 0 :(得分:2)
使用mongoDB Aggregation Set Operator ,您可以过滤您的阵列。首先找出给定数组与实际数据库数组的交集,然后使用set equals方法。检查以下查询:
db.collectionName.aggregate({
"$project": {
"checkAllElem": {
"$setEquals": [{
"$setIntersection": ["$items", [5, 2, 6, 4, 7, 8]]
}, "$items"]
},
"items": 1
}
}, {
"$match": {
"checkAllElem": true
}
})