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

Mongoose中updateMany配合$and条件更新文档匹配异常如何解决?

问题根因

你当前的查询条件中数值比较的方向写反了:

  • 现有代码的条件 { tp_buy: { $gte: incomingData.bid } } 含义是文档的tp_buy字段值大于等于传入的incomingData.bid值,和你预期的「传入的incomingData.bid大于等于文档tp_buy」逻辑完全相反。
    你给出的更新后示例中tp_buy为1.16583、incomingData.bid为1.16487,刚好满足tp_buy >= incomingData.bid的条件,所以会触发更新,属于业务逻辑写反,不是类型或语法错误。

修正方案

把比较运算符从$gte替换为$lte即可实现预期逻辑,调整后的完整代码如下:

db.dbDB.collection("buy").updateMany(
  {
    $and: [
      { profit: { $eq: null } },
      { tp_buy: { $lte: incomingData.bid } },
    ],
  },
  {
    $set: {
      profit: true,
      execute_p: incomingData.bid,
    },
  }
);

调整后查询条件的含义为:文档profit字段值为null 且 文档tp_buy字段值小于等于传入的incomingData.bid,完全匹配你需要的业务逻辑。

可选优化

MongoDB中多个顶级查询条件默认就是$and逻辑关系,不需要显式声明$and,可以简化代码结构:

db.dbDB.collection("buy").updateMany(
  {
    profit: null,
    tp_buy: { $lte: incomingData.bid }
  },
  {
    $set: {
      profit: true,
      execute_p: incomingData.bid
    }
  }
);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 04:06:03