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

如何基于字段值有条件执行MongoDB聚合管道的addFields阶段

解决方案

MongoDB聚合的阶段是对所有输入文档统一执行的,不支持单文档维度的条件跳过整个阶段,你可以直接在$addFields阶段内部通过条件逻辑实现需求,写法如下:

{
  $addFields: {
    items: {
      $cond: [
        // 判断items是否为空数组
        { $eq: [{ $size: "$items" }, 0] },
        // 空数组直接返回原值,不做修改
        "$items",
        // 非空数组遍历元素,新增product嵌套字段
        {
          $map: {
            input: "$items",
            in: {
              $mergeObjects: [
                "$$this",
                {
                  product: {
                    title: "some title",
                    code: "some code"
                  }
                }
              ]
            }
          }
        }
      ]
    }
  }
}

逻辑说明

  • 用$size操作符读取items数组的长度,判断是否为空
  • 空数组场景直接返回原数组内容,不会产生任何改动,符合场景1的要求
  • 非空数组场景通过$map遍历每一个数组元素,再用$mergeObjects合并原有字段和新增的product嵌套字段,不会覆盖item_id、count等原有属性,完全符合场景2的输出要求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 19:48:03