提问者:小点点

MongoDB:用regex聚合数组元素


我使用MongoDB v 4.2.17,其中有一组文档,如下所示:

[
  {
    a: 'a',
    b: 'b',
    c: ['apples', 'grapes']
  },
  {
    a: 'a',
    b: 'b',
    c: ['elephants', 'apes']
  }
]

我需要编写一个将返回所有文档的查询,其中数组 c 的任何元素都与提供的正则表达式匹配。

我有一个与数组中的第一个元素匹配的解决方案:

"apes'} }}])

此查询成功匹配数组中第一个元素与正则表达式匹配的文档。

我需要编写一个聚合来获取数组中任何元素匹配正则表达式的文档。

我试过了(没用)

db.collection.aggregate([{$match: {'c.$': {$regex: 'apes'} }}])

我需要使用正则表达式和聚合,因此简单的查找不起作用。提前谢谢。


共1个答案

匿名用户

只需使用值c,而不是c.0c.$

db.collection.aggregate([
  {
    $match: {
      "c": {
        $regex: "apes"
      }
    }
  }
])

检查此示例