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。
错误分析与修正
原代码存在两个核心问题:
- 嵌套
$cond语法错误:内层$cond不需要额外声明$cond:键,直接写条件表达式即可。 - 比较条件格式错误: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
相关产品推荐
相关产品推荐

