MongoDB嵌套分组:如何重命名_id字段、合并数据并计算平均时间
实现方案
你需要的聚合查询逻辑如下:
db.collection.aggregate([ // 1. 按「分组字段+标题」复合分组,合并同标题数据计算平均耗时 { $group: { _id: { groupKey: "$group", title: "$title" }, avgtime: { $avg: "$costTime" } } }, // 2. 按分组字段二次聚合,拼接详情数组 { $group: { _id: "$_id.groupKey", details: { $push: { title: "$_id.title", avgtime: "$avgtime" } } } }, // 3. 调整输出字段,将_id重命名为group { $project: { _id: 0, group: "$_id", details: 1 } } ])
注意事项
- 上述代码中
$group对应你原文档中用来区分one/two分组的字段名,$costTime对应你原文档中存储单条记录耗时的字段名,可根据实际业务字段调整 - 第一次复合分组会自动将同一分组下、相同title的所有记录合并计算平均值,无需额外做匹配过滤
内容的提问来源于stack exchange,提问作者user15111949
相关产品推荐
相关产品推荐

