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

时间:2020-04-02 05:58:00

标签: 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条记录。

对此的查询是什么?

1 个答案:

答案 0 :(得分:2)

您可以使用这个:

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