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

MongoDB嵌套$cond语法错误排查:分组聚合条件求和问题

修正MongoDB分组聚合中的条件求和语法错误

需要按Campaign_Name字段执行分组操作,再根据指定条件选择对应字段进行sum聚合,但以下代码存在语法错误:

$group : {
  _id: "$Campaign_Name",
  Basecount: {
    $sum: {
      $cond: [
        { "Recharge_Flag_Overall": { $eq: "NA"} },
        $cond: [
          { "Plus_Orn" : { $eq: 0} },
          "$Winback_Orn",
          "$Plus_Orn"
        ],
        "$Basecount"
      ]
    }
  }
}

聚合条件说明

当Recharge_Flag_Overall的值为"NA"时,需判断Plus_Orn的值:

  • 若Plus_Orn为1,则对Plus_Orn求和
  • 若Plus_Orn为0,则对Winback_Orn求和
    若Recharge_Flag_Overall的值不为"NA",则直接对Basecount字段求和。

注:Plus_Orn和Winback_Orn的取值仅为0或1。

错误分析与修正

原代码存在两个核心问题:

  1. 嵌套$cond语法错误:内层$cond不需要额外声明$cond:键,直接写条件表达式即可。
  2. 比较条件格式错误:MongoDB字段比较需使用{ $eq: ["$字段名", 目标值] }格式,原代码将字段作为键的写法不符合语法规范。

修正后的代码如下:

$group: {
  _id: "$Campaign_Name",
  Basecount: {
    $sum: {
      $cond: [
        { $eq: ["$Recharge_Flag_Overall", "NA"] },
        {
          $cond: [
            { $eq: ["$Plus_Orn", 1] },
            "$Plus_Orn",
            "$Winback_Orn"
          ]
        },
        "$Basecount"
      ]
    }
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 16:45:44