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

Mongoose聚合中如何修改$cond返回结果,对$driverDebt按条件做减法

正确聚合写法

你原来的写法错误原因是在$cond的返回分支中额外嵌套了不必要的$sum,且语法符号(逗号、括号)不匹配。外层的$sum已经负责对所有文档的计算结果进行累加,你只需要在内部正确实现单文档的driverDebt计算逻辑即可,正确写法如下:

driverDebt: {
  $sum: {
    $cond: [
      // 原有状态判断:已支付的订单不计入欠款
      { $in: ["$status", ["driverHasPaid", "paid"]] },
      0,
      // 新增配送费收取判断
      {
        $cond: [
          { $eq: ["$deliveryFeeCollected", "no"] },
          // 未收取配送费:扣除对应金额
          { $subtract: ["$driverDebt", "$deliveryPrice"] },
          // 已收取:保留原有欠款金额
          "$driverDebt"
        ]
      }
    ]
  }
}

可选兼容处理

如果你的字段可能存在空值/不存在的情况,可以加$ifNull做兼容,避免减法返回非预期的null:

// 把减法部分替换成如下写法,默认空值按0计算
{ $subtract: [ { $ifNull: ["$driverDebt", 0] }, { $ifNull: ["$deliveryPrice", 0] } ] }

内容的提问来源于stack exchange,提问作者Lhon Rafaat Mohammed

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 10:57:01