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

如何将PostgreSQL后缀匹配查询转换为MongoDB查询?

PostgreSQL查询转MongoDB实现方案

需求回顾

原PostgreSQL查询用于找出固定字符串'545454129898'以identity字段值结尾的记录:

select * from sample where '545454129898' like '%' || identity ;

推荐实现方式:$expr + $regexMatch

MongoDB中可通过聚合表达式动态构建匹配规则,性能优于JavaScript脚本方式:

db.sample.find({
  $expr: {
    $regexMatch: {
      input: "545454129898",
      regex: { $concat: ["$identity", "$"] },
      options: "i" -- 可选,不需要忽略大小写可删除此参数
    }
  }
})

逻辑说明

  • $expr:允许在查询条件中使用聚合表达式,支持引用字段值构建匹配规则
  • $regexMatch:执行正则匹配,input指定待检查的固定字符串,regex通过$concat将identity字段值与正则元字符$(表示字符串结尾)拼接,实现"以字段值结尾"的判断

备选实现方式:$where(不推荐)

如果需要更贴近SQL的语法风格,可使用$where执行JavaScript判断,但此方式会逐文档执行代码,大数据量场景下性能较差:

db.sample.find({
  $where: function() {
    return "545454129898".endsWith(this.identity);
  }
})

查询结果

两种方式都会返回符合条件的文档:

[
  { _id: ObjectId("654d5e00b560e4fd57bde48a"), identity: '9898' },
  { _id: ObjectId("654d5e0cb560e4fd57bde48b"), identity: '129898' }
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 19:30:10