如何匹配数组中的元素?MongoDB 聚合

Lou*_*ous 1 mongodb aggregation-framework

我需要检查其特定字段包含在数组中的所有文档。

例如我有数组

arr = ['a', 'b', 'a']
Run Code Online (Sandbox Code Playgroud)

我想匹配所有字段等于 的my_letter文档a or b

我有文件:

[
  {
    _id: ObjectID(),
    my_letter:'d'
  },
  {
    _id: ObjectID(),
    my_letter:'a'
  },
  {
    _id: ObjectID(),
    my_letter:'b'
  }
]
Run Code Online (Sandbox Code Playgroud)

我希望聚合返回

[
  {
    _id: ObjectID(),
    my_letter:'a'
  },
  {
    _id: ObjectID(),
    my_letter:'b'
  }
]
Run Code Online (Sandbox Code Playgroud)

我在我的$match管道中尝试过这个

{
  $match: {
    _id: {
      $elemMatch: {
        $or: [
          { $eq: ["a"] },
          { $eq: ["b"] },
        ],
      },
    },
  },
},
Run Code Online (Sandbox Code Playgroud)

当然是行不通的。您建议如何完成 $match 管道?

小智 6

db.collection.find({
  my_letter: {
    $in: [ "a", "b" ]
  }
})
Run Code Online (Sandbox Code Playgroud)

蒙戈游乐场


db.collection.aggregate([
  {
    $match: {
      my_letter: {
        $in: [ "a", "b" ]
      }
    }
  }
])
Run Code Online (Sandbox Code Playgroud)

蒙戈游乐场