如何通过MongoDB查询/聚合将文档格式化为指定对象数组?
MongoDB聚合转换文档结构问题
原始集合文档格式
{ "_id": "657c54befca2b6a2cdd935ba", "data": { "name": "Bob", "surname": "xxx", "age": "20" }, "header": { "data": "1702646974156" }, "_class": "Prova" } { "_id": "657c54befca2b6a2cdd935bb", "data": { "name": "Tom", "surname": "yyy", "age": "25" }, "header": { "data": "1702646974156" }, "_class": "Prova" }
目标转换结构
{ "data": [ { "member": { "name": "Bob", "surname": "xxx" } }, { "member": { "name": "Tom", "surname": "yyy" } } ] }
解决方案:聚合操作实现转换
完全可以通过MongoDB的聚合管道完成这个结构转换,具体命令如下:
db.yourCollectionName.aggregate([ // 提取所需字段,构造member结构 { $project: { _id: 0, member: { name: "$data.name", surname: "$data.surname" } } }, // 将所有文档聚合到data数组中 { $group: { _id: null, data: { $push: "$$ROOT" } } }, // 移除自动生成的_id字段 { $project: { _id: 0 } } ])
步骤说明:
- $project:过滤掉
_id、header、_class等无关字段,从data中提取name和surname,构造出member对象。 - $group:以
null为分组键,用$push把所有处理后的文档收集到data数组里。 - $project:最后移除分组产生的
_id,得到目标结构。
内容的提问来源于stack exchange,提问作者dargui
相关产品推荐
相关产品推荐

