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

如何基于MongoDB中的对象数组生成按年龄聚合分数的统计表格?

MongoDB数据聚合生成指定统计表格

给定school集合的文档结构(已修正原结构语法错误):

{
  "classes": [
    {
      "name": "A",
      "students": [
        {
          "name": "John Doe",
          "age": 15,
          "note": 9
        },
        {
          "name": "Jane Doe",
          "age": 17,
          "note": 8
        },
        {
          "name": "James Doe",
          "age": 15,
          "note": 7
        }
      ]
    }
  ]
}

我们需要按班级、学生年龄分组,统计对应年龄段的成绩总和,最终生成如下格式的统计表格:

| class | age | sumNotes
| A | 15 | 16
| A | 17 | 8


用聚合管道实现统计

执行以下MongoDB聚合查询,就能直接得到分组统计结果:

db.school.aggregate([
  // 拆分classes数组,每个班级单独成为一个文档
  { $unwind: "$classes" },
  // 拆分每个班级下的students数组,每个学生单独成为一个文档
  { $unwind: "$classes.students" },
  // 按班级+年龄分组,计算成绩总和
  {
    $group: {
      _id: {
        class: "$classes.name",
        age: "$classes.students.age"
      },
      sumNotes: { $sum: "$classes.students.note" }
    }
  },
  // 重新整理输出字段,让结果更直观
  {
    $project: {
      _id: 0,
      class: "$_id.class",
      age: "$_id.age",
      sumNotes: 1
    }
  }
])

查询结果

运行上述代码后,会得到以下结构化结果:

[
  { "class": "A", "age": 15, "sumNotes": 16 },
  { "class": "A", "age": 17, "sumNotes": 8 }
]

生成目标表格

把上述结果中的字段对应填入表格即可。如果需要自动生成表格,可以用脚本(比如Node.js、Python)遍历聚合结果,拼接表头和行内容,输出成指定的Markdown表格格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 16:58:59