MongoDB 聚合与字符串字符匹配

问题描述 投票:0回答:1

我的样本文档是

[
  {
    "id": 1234,
    "close": "11100",
    "products": [
      {
        "productId": 111
      }
    ]
  },
  {
    "id": 1235,
    "close": "10101",
    "products": [
      {
        "productId": 111
      }
    ]
  }
]

我只想在“关闭”字段第二个字符为0时获取文档

注意:字符索引是动态的

预期输出:

{
        "id": 1235,
        "close": "10101",
        "products": [
          {
            "productId": 111
          }
        ]
      }

有没有办法在匹配阶段过滤文档?

这是一个示例文档mongoplayground

我在 $project 阶段尝试了这种聚合,但我想在 $match 阶段过滤它。谢谢

close: {
    $not: {
      $regex: {
        $substr: ["$close", 2, 1],

        regex: "[1]",
      },
    },
  }
mongodb aggregation-framework
1个回答
0
投票

一个选项是:

db.collection.aggregate([
  {
    $match: {
      $expr: {
        $eq: [
          {
            "$substr": [
              "$close",
              1,
              1
            ]
          },
          "0"
        ]
      }
    }
  }
])
© www.soinside.com 2019 - 2024. All rights reserved.