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

MongoDB(Node.js)中find()如何访问文档字段执行运算条件查询

你当前的写法是在Node.js运行环境直接计算price_clic * number_view的固定值,调用的是当前上下文的变量,并非每条文档自身存储的price_clic和number_view字段值,无法实现预期的查询效果。

正确实现方式

MongoDB 3.6及以上版本支持$expr操作符,可以在查询条件中使用聚合表达式,直接引用文档自身字段完成运算:

Model.find({
  $expr: {
    $gte: [
      "$daily_price", // 用$+字段名引用文档自身的daily_price字段
      { $multiply: ["$price_clic", "$number_view"] } // 用$multiply运算操作符计算两个字段的乘积
    ]
  }
})

旧版本兼容方案(不推荐)

如果使用的MongoDB版本低于3.6,可以用$where实现,但该方式性能差、存在注入风险,非必要不要使用:

Model.find({
  $where: function() {
    return this.daily_price >= this.price_clic * this.number_view
  }
})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 11:54:04