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

MongoDB聚合分组求和报population未定义错误如何解决

报错原因
  • 字段引用不符合语法规则:聚合管道中引用文档字段时,必须使用$字段名的字符串格式,你写的$population未加引号包裹,MongoDB会将其识别为未定义的JavaScript变量,直接抛出population not defined错误。
  • $group阶段结构错误:$group必须通过_id字段指定分组依据,不能直接自定义普通键作为分组条件。
  • 缺少匹配筛选步骤:要统计欧洲总人口,需要先过滤出所有归属欧洲的国家记录,否则会统计到全集合所有国家的人口总和。
正确实现语句

统计全欧洲总人口

不需要拆分次区域的场景下,将分组_id设为null,把所有匹配到的欧洲国家归为同一组求和即可:

db.landen.aggregate([
  {
    // 筛选所有欧洲国家
    $match: {
      region: "Europe"
    }
  },
  {
    $group: {
      _id: null,
      totalPopulation: {
        $sum: "$population" // 字段路径必须为带$前缀的字符串
      }
    }
  }
])

如果你实际需求是统计东欧区域的总人口,只需要把$match的条件替换为subregion: "Eastern Europe"即可。

按欧洲次区域分别统计人口

如果需要拆分东欧、西欧、南欧等次区域分别统计人口,把分组_id指向次区域字段即可:

db.landen.aggregate([
  {
    $match: {
      region: "Europe"
    }
  },
  {
    $group: {
      _id: "$subregion",
      subregionPopulation: {
        $sum: "$population"
      }
    }
  }
])
返回结果示例

全欧洲总人口统计的返回结构如下,totalPopulation字段就是最终统计值:

[
  {
    "_id": null,
    "totalPopulation": 746389000
  }
]

内容的提问来源于stack exchange,提问作者Ruuf

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 00:27:19