MongoDB聚合分组时如何添加固定字段并计算平均值
MongoDB聚合分组:保留leader并计算value平均值
数据集
{key: "A", leader: "Anna", value: 10} {key: "A", leader: "Anna", value: 10} {key: "A", leader: "Anna", value: 40}
需求
按key字段分组,计算value的平均值,同时保留每个key对应的leader(每个key的leader唯一),最终输出格式如下:
{key: "A", leader: "Anna", average_value: 20}
当前代码问题
你提供的聚合管道存在两个问题:
$match阶段中的$qte是拼写错误,应为$gte(或其他符合你需求的匹配操作符)$group阶段仅计算了平均值,未保留leader字段
解决方案
在$group阶段使用$first或$last操作符获取leader(同一key下的leader完全相同,两个操作符都能得到正确值),同时修正$match的语法错误,再通过$project调整输出格式:
[ { $match: { value: { $gte: 1 } } // 修正拼写错误:$qte → $gte }, { $group: { _id: "$key", leader: { $first: "$leader" }, // 保留leader字段 average_value: { $avg: "$value" } } }, { $project: { _id: 0, // 移除默认生成的_id字段 key: "$_id", // 将_id重命名为key leader: 1, average_value: 1 } } ]
说明
$first/$last:因为同一key下的leader完全一致,取分组内任意一个文档的leader值都正确$project阶段:用来调整输出字段名和结构,让结果和目标格式完全匹配
内容的提问来源于stack exchange,提问作者Ptros
相关产品推荐
相关产品推荐

