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

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}

当前代码问题

你提供的聚合管道存在两个问题:

  1. $match阶段中的$qte是拼写错误,应为$gte(或其他符合你需求的匹配操作符)
  2. $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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 22:07:17