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数组 } } ])
命令解释:
$group阶段:
- 以
ccp字段作为分组依据(_id: "$ccp"),这样所有相同ccp值的文档会被归为一组。 - 使用
$push操作符,把每个文档中的period、sales、units字段打包成一个对象,添加到该组的periods数组中。
- 以
$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
相关产品推荐
相关产品推荐

