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

如何将含a/b < c/d条件的SQL查询转换为MongoDB查询语句

将SQL的a/b < c/d条件转换为MongoDB查询语句

原始SQL语句逻辑是从TBA表中筛选出满足a列除以b列的结果 小于 c列除以常量d的结果的所有数据:

select * from TBA where a/b < c/d

针对MongoDB的TBA集合,有两种常用实现方式:

方式一:使用find配合$expr

适合仅需筛选数据的简单场景,$expr允许在查询条件中使用聚合表达式实现字段间的运算比较:

db.TBA.find({
  $expr: {
    $lt: [
      { $divide: ["$a", "$b"] }, // 计算a/b
      { $divide: ["$c", 10] }    // 替换10为你的实际常量d值
    ]
  }
})

方式二:使用聚合管道

如果后续需要对筛选后的数据做进一步处理(比如投影、分组),推荐用聚合管道的$match阶段实现:

db.TBA.aggregate([
  {
    $match: {
      $expr: {
        $lt: [
          { $divide: ["$a", "$b"] },
          { $divide: ["$c", 10] } // 替换为实际常量d
        ]
      }
    }
  }
  // 可添加其他聚合阶段,如$project、$group等
])

额外注意事项

如果b字段可能存在0值,需要额外添加条件避免除法错误,示例:

db.TBA.find({
  $and: [
    { $ne: ["$b", 0] }, // 排除b为0的文档
    {
      $expr: {
        $lt: [
          { $divide: ["$a", "$b"] },
          { $divide: ["$c", 10] }
        ]
      }
    }
  ]
})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 15:55:20