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

MongoDB集合格式转换需求:将类RDBMS结构转为嵌套JSON结构

嘿,作为MongoDB新手,想要把扁平的文档转成嵌套结构来发挥文档数据库的优势,这个思路非常棒!针对你的需求,用MongoDB的聚合管道就能轻松搞定,具体方案如下:

解决方案:使用MongoDB聚合管道实现嵌套结构转换

你可以通过MongoDB的$group和$push操作符来完成这个分组嵌套的需求,具体的聚合命令如下:

db.yourCollectionName.aggregate([
  {
    $group: {
      _id: "$ccp", // 按ccp字段分组
      periods: {
        $push: {
          period: "$period",
          sales: "$sales",
          units: "$units"
        } // 将每个分组内的period相关数据推入periods数组
      }
    }
  },
  {
    $project: {
      _id: 0, // 隐藏默认的_id字段
      ccp: "$_id", // 将分组的_id(即ccp值)映射为ccp字段
      periods: 1 // 保留periods数组
    }
  }
])

命令解释:

  1. $group阶段:

    • 以ccp字段作为分组依据(_id: "$ccp"),这样所有相同ccp值的文档会被归为一组。
    • 使用$push操作符,把每个文档中的period、sales、units字段打包成一个对象,添加到该组的periods数组中。
  2. $project阶段:

    • 隐藏自动生成的_id字段(_id: 0),让输出结构更符合你的目标格式。
    • 将分组用的_id(也就是ccp的值)重新命名为ccp字段,同时保留periods数组。

执行结果:

运行上述命令后,你会得到完全符合预期的嵌套结构:

[
  {
    "ccp": 1,
    "periods": [
      { "period": 1, "sales": 100, "units": 50 },
      { "period": 2, "sales": 200, "units": 50 }
    ]
  },
  {
    "ccp": 2,
    "periods": [
      { "period": 1, "sales": 100, "units": 50 },
      { "period": 2, "sales": 200, "units": 50 }
    ]
  }
]

如果你的集合名称不是yourCollectionName,记得替换成实际的集合名哦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:59:09