【问题标题】:MongoDB: Aggregate on array elements with regexMongoDB:使用正则表达式聚合数组元素
【发布时间】:2022-01-18 22:55:32
【问题描述】:

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

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

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

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

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

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

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

我试过了(没用)

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

我需要使用regex 和聚合,所以简单的find 将不起作用。 提前致谢。

【问题讨论】:

    标签: arrays mongodb


    【解决方案1】:

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

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

    查看this example

    【讨论】:

      猜你喜欢
      • 2020-11-02
      • 2016-05-21
      • 2014-08-11
      • 2018-01-13
      • 1970-01-01
      • 2019-06-03
      • 2017-03-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多