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

MongoDB中如何按双条件判断设置新增字段fl2的值为1或0

MongoDB实现方案

场景1:仅查询时返回带fl2字段的结果(不修改原数据)

使用聚合管道实现,代码如下:

db.collection.aggregate([
  {
    $addFields: {
      data: {
        $map: {
          input: "$data",
          as: "item",
          in: {
            // 保留元素原有所有字段
            $mergeObjects: [
              "$$item",
              {
                fl2: {
                  $cond: {
                    if: {
                      $and: [
                        { $lte: ["$$item.value", 100] },
                        { $eq: ["$$item.fl", 1] }
                      ]
                    },
                    then: 1,
                    else: 0
                  }
                }
              }
            ]
          }
        }
      }
    }
  }
])

场景2:直接更新集合内原有文档(永久新增fl2字段)

MongoDB 4.2及以上版本支持聚合管道式更新,代码如下:

db.collection.updateMany(
  {}, // 匹配所有文档,可按需添加过滤条件缩小更新范围
  [
    {
      $addFields: {
        data: {
          $map: {
            input: "$data",
            as: "item",
            in: {
              $mergeObjects: [
                "$$item",
                {
                  fl2: {
                    $cond: {
                      if: {
                        $and: [
                          { $lte: ["$$item.value", 100] },
                          { $eq: ["$$item.fl", 1] }
                        ]
                      },
                      then: 1,
                      else: 0
                    }
                  }
                }
              ]
            }
          }
        }
      }
    }
  ]
)

逻辑说明

  • $map 遍历data数组的每一个元素,对每个元素做单独处理
  • $mergeObjects 保留元素原有字段的同时,新增fl2字段
  • $cond 做条件判断,同时满足value ≤ 100和fl=1两个条件时返回1,否则返回0,完全匹配需求的判断逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 20:24:04