将文档数组中的所有元素与输入数组匹配

  • 本文关键字:数组 元素 文档 mongodb
  • 更新时间 :
  • 英文 :


数据库有如下文档。

{
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条记录。

对此有什么疑问?

您可以使用这个:

db.collection.aggregate([
{
$match: {
$expr: {
$eq: [
"$items",
{ $setIntersection: ["$items", ["a", "b", "c"]] }
]
}
}
}
])

最新更新