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

如何将MySQL语句SELECT FROM testing WHERE int_col + int_col2 > 123转为MongoDB查询?

解决MySQL到MongoDB的查询转换问题

没问题,我来帮你搞定这条SQL到MongoDB查询的转换!你的MySQL语句是要筛选出int_col和int_col2之和大于123的记录,在MongoDB里可以通过两种常用方式实现:

方法1:使用find()配合$expr

$expr允许你在查询条件中使用聚合表达式,这样就能对文档内的字段进行算术运算了,写法非常直观:

db.testing.find({
  $expr: {
    $gt: [ // 大于判断逻辑
      { $add: ["$int_col", "$int_col2"] }, // 计算两个字段的和
      123 // 对比的阈值
    ]
  }
})

如果需要像SQL里的SELECT那样指定返回字段,可以添加投影参数(比如只返回int_col、int_col2,不返回默认的_id):

db.testing.find(
  { $expr: { $gt: [ { $add: ["$int_col", "$int_col2"] }, 123 ] } },
  { int_col: 1, int_col2: 1, _id: 0 }
)

方法2:使用聚合管道aggregate()

如果后续还需要对筛选后的结果进行其他操作(比如分组、排序、统计),用聚合管道会更灵活:

db.testing.aggregate([
  {
    $match: {
      $expr: {
        $gt: [ { $add: ["$int_col", "$int_col2"] }, 123 ]
      }
    }
  }
  // 这里可以继续添加其他聚合阶段,比如$project、$sort、$group等
])

小提示

  • $expr是MongoDB 3.6及以上版本支持的特性,如果你的MongoDB版本低于3.6,建议升级或者直接用聚合管道的方式(低版本聚合也支持类似的表达式判断)。
  • 字段名前面的$是MongoDB中引用文档字段的语法,一定要加上,不然会被当成普通字符串处理哦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 07:18:24