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

MongoDB中如何单次更新多个嵌套子文档?

单个查询完成权限转移的实现方案

可以通过单个更新操作完成权限转移,利用MongoDB的$map操作符遍历employees数组,结合条件判断批量修改指定员工的权限值。

具体查询语句

db.managers.update(
  {},
  {
    $set: {
      employees: {
        $map: {
          input: "$employees",
          as: "emp",
          in: {
            $cond: [
              { $eq: ["$$emp.name", "Adam"] },
              { name: "$$emp.name", _id: "$$emp._id", bananas: "not-allowed" },
              {
                $cond: [
                  { $eq: ["$$emp.name", "Smith"] },
                  { name: "$$emp.name", _id: "$$emp._id", bananas: "allowed" },
                  "$$emp"
                ]
              }
            ]
          }
        }
      }
    }
  }
)

操作说明

  • $map会遍历目标数组的每一个元素,通过嵌套的$cond做两次条件判断:
    • 匹配到Adam时,将其bananas字段设为not-allowed
    • 匹配到Smith时,将其bananas字段设为allowed
    • 其余员工的原有数据保持不变
  • 该操作会一次性完成两个员工的权限修改,无需执行两次独立的更新命令

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 01:45:35