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

MongoDB 3.4.10如何合并字段并重构集合结构?

解决方案:MongoDB 3.4.10 集合字段重构

针对你的需求,在MongoDB 3.4.10里有两种简便的实现方式,你可以根据是否要修改原集合来选择:

方法1:直接更新原集合的所有文档

MongoDB 3.4开始支持在updateMany中使用聚合管道,我们可以用这个特性直接重构每个文档的结构:

db.yourCollection.updateMany(
  {}, // 匹配集合中所有文档
  [
    // 第一步:将所有需要的字段值合并为数组,覆盖原pass字段
    {
      $addFields: {
        pass: [
          "$pass",
          "$field4",
          "$field5",
          "$pass2",
          "$pass3"
        ]
      }
    },
    // 第二步:只保留_id和pass字段,移除其他所有字段
    {
      $project: {
        pass: 1
      }
    }
  ]
)

额外提示:

  • 记得替换yourCollection为你实际使用的集合名称
  • 如果需要把数字类型的field4、field5转为字符串(保持数组内类型统一),可以用$toString操作符修改数组定义:
    pass: [
      "$pass",
      { $toString: "$field4" },
      { $toString: "$field5" },
      "$pass2",
      "$pass3"
    ]
    

方法2:生成新集合(不修改原数据)

如果你不想改动原集合,希望生成一个结构符合要求的新集合,可以用聚合管道配合$out操作符:

db.yourCollection.aggregate([
  {
    $project: {
      pass: [
        "$pass",
        "$field4",
        "$field5",
        "$pass2",
        "$pass3"
      ]
    }
  },
  {
    $out: "newRefactoredCollection" // 新集合的名称
  }
])

执行后,newRefactoredCollection就是你需要的仅包含_id和数组类型pass字段的集合,原集合数据完全不受影响。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:43:13