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

MongoDB 4.0:从数组首元素提取字段更新嵌套文档

MongoDB 4.0 新增ownershipClientCode字段解决方案

场景1:查询时临时展示新增字段

如果仅需要在查询结果中添加ownership.ownershipClientCode字段,无需修改原文档,可通过聚合查询直接提取目标值:

db.client.aggregate([
  {
    $addFields: {
      "ownership.ownershipClientCode": { $arrayElemAt: ["$clientIds.clientClusterCode", 0] }
    }
  }
])

原理:$clientIds.clientClusterCode会自动提取数组clientIds中每个元素的clientClusterCode值,形成一个新数组,再通过$arrayElemAt取该数组的第一个元素,即为所需值。

场景2:永久更新集合中的文档

由于MongoDB 4.0不支持在update操作中直接使用聚合管道,需通过遍历文档逐个更新:

db.client.find().forEach(function(doc) {
  // 先判断clientIds数组存在且非空,避免空指针报错
  if (doc.clientIds && doc.clientIds.length > 0) {
    const targetCode = doc.clientIds[0].clientClusterCode;
    db.client.updateOne(
      { _id: doc._id },
      { $set: { "ownership.ownershipClientCode": targetCode } }
    );
  }
})

执行此脚本前建议先在测试环境验证,确保逻辑符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 21:30:47