You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在MongoDB聚合$match阶段按字符串指定位置字符过滤文档?

可以在$match阶段实现该过滤

当然可以直接在$match阶段完成这个过滤需求,无需先经过$project阶段。你可以借助$expr在$match中使用聚合表达式,结合字符串截取操作符定位目标字符并做判断:

具体聚合代码

db.collection.aggregate([
  {
    $match: {
      $expr: {
        $eq: [
          { $substrCP: ["$close", 1, 1] }, // MongoDB字符串索引从0开始,第二个字符对应索引1
          "0"
        ]
      }
    }
  }
])

代码说明

  • $substrCP:用于截取字符串指定部分,参数依次为目标字段、起始索引(从0开始计数)、截取长度。这里取close字段的第二个字符(索引1),截取长度为1。
  • $eq:判断截取到的字符是否等于"0",满足条件的文档会被保留。

你之前尝试的问题

你在$project阶段写的代码逻辑存在问题:$regex无法直接嵌套$substr这类表达式使用,同时你指定的起始索引为2(对应第三个字符),和需求的第二个字符不匹配,所以无法得到正确结果。

内容的提问来源于stack exchange,提问作者phani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 05:42:05