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

How to match an element in array? MongoDB aggregation

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

例如我有数组

arr = ['a', 'b', 'a']

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

我有文件:

[
  {
    _id: ObjectID(),
    my_letter:'d'
  },
  {
    _id: ObjectID(),
    my_letter:'a'
  },
  {
    _id: ObjectID(),
    my_letter:'b'
  }
]

我希望聚合到 return

[
  {
    _id: ObjectID(),
    my_letter:'a'
  },
  {
    _id: ObjectID(),
    my_letter:'b'
  }
]

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

{
  $match: {
    _id: {
      $elemMatch: {
        $or: [
          { $eq: ["a"] },
          { $eq: ["b"] },
        ],
      },
    },
  },
},

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

db.collection.find({
  my_letter: {
    $in: [ "a", "b" ]
  }
})

mongoplayground


db.collection.aggregate([
  {
    $match: {
      my_letter: {
        $in: [ "a", "b" ]
      }
    }
  }
])

mongoplayground