数据库具有以下文档。
{
id: 1,
items: ["a", "b", "c"]
},
{
id: 2,
items: ["a", "b"]
},
{
id: 3,
items: ["a", "b", "c", "d"]
}
我需要获取所有条目都应包含在输入查询中的记录。
如果输入["a", "b", "c"]
#1和#2应该出现。因为所有项目都包含在输入中。但不是#3,因为输入没有“ d”。
如果我使用{query: {$in: ["a", "b", "c"]}}
=所有记录都来了。
如果我使用{query: {$all: ["a", "b", "c"]}}
=#1,则将出现#2条记录。
对此的查询是什么?
答案 0 :(得分:2)
您可以使用这个:
db.collection.aggregate([
{
$match: {
$expr: {
$eq: [
"$items",
{ $setIntersection: ["$items", ["a", "b", "c"]] }
]
}
}
}
])