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

MongoDB match查询中使用substring操作符实现类SQL LEFT截取匹配

错误原因

你编写的聚合语句报错是因为$match 阶段不能直接将表达式运算符作为查询键使用,要在匹配阶段用字段计算结果做判断,需要搭配$expr运算符。

正确写法

方案1:修正后的聚合查询

db.inventory.aggregate(
   [
     {
       $match: {
         $expr: {
           $eq: [ { $substrCP: ["$id", 0, 4] }, "1234" ]
         }
       }
     },
     {
       $project: {
         id: 1,
         date: 1
       }
     }
   ]
)

注:如果id字段仅包含ASCII字符,使用$substr替代$substrCP也可正常运行;如果id是数字类型,需要先转成字符串再截取,将$substrCP的第一个参数替换为{ $toString: "$id" }即可。

方案2:更高效的普通查询(无需聚合)

你要实现的LEFT(id,4) = "1234"逻辑等价于匹配id以1234开头,直接用正则查询性能更好,id字段存在索引时还可以命中索引加速查询:

db.inventory.find(
  { id: /^1234/ },
  { id: 1, date: 1 }
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 15:36:03