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

如何在MongoDB中将嵌套属性保存到新集合的新文档中?

MongoDB 拆分嵌套数组到新集合

你可以通过MongoDB的聚合管道实现这个需求,核心是用$unwind拆分嵌套数组,再用$out将结果写入新集合。以下是具体操作:

假设你的原集合名为orders,要创建的新集合名为user_products,执行以下聚合命令:

db.orders.aggregate([
  // 将products数组拆分为单个文档,每个数组元素对应一条记录
  { $unwind: "$products" },
  // 筛选并提取需要的字段
  {
    $project: {
      _id: 0, // 不保留原文档的_id
      userId: 1,
      productId: "$products.productId",
      quantity: "$products.quantity"
    }
  },
  // 将处理后的结果写入新集合
  { $out: "user_products" }
])

关键步骤说明:

  • $unwind:把包含products数组的原文档拆分成多条文档,每条文档对应数组中的一个产品项。
  • $project:只保留你需要的字段,这里提取原文档的userId,以及嵌套在products里的productId和quantity。
  • $out:自动创建目标集合(如果不存在),并将聚合结果写入;如果集合已存在,会替换原有内容。如果需要追加数据而非替换,可以用$merge替代$out。

额外提示:

  • 记得把命令中的orders和user_products替换成你实际使用的集合名称。
  • 如果原文档存在products为空数组的情况,$unwind会默认排除这类文档。若要保留它们(此时productId和quantity会为null),可以修改$unwind的参数:
    { $unwind: { path: "$products", preserveNullAndEmptyArrays: true } }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 11:48:21