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

如何对MongoDB文档内数组中所有对象的指定数字字段求和

解决方案

你只需要用MongoDB内置的$sum运算符就可以快速实现需求,无需复杂的数组拆分操作,3.2及以上版本都支持该语法。

场景1:查询每个文档对应的score数组总得分(保留原文档核心字段)

聚合语句如下,注意将yourCollectionName替换为你实际的集合名称:

db.yourCollectionName.aggregate([
  // 如有筛选条件可以在此处添加$match阶段,示例:筛选特定球员
  // { $match: { playerName: "Rohit Lal" } },
  {
    $project: {
      // 按需保留需要的原字段
      playerName: 1,
      tournamentId: 1,
      // 直接对score数组内所有runsScored字段求和
      totalRuns: { $sum: "$score.runsScored" }
    }
  }
])

你提供的示例文档运行后将得到结果:

{
  "_id": "6278686",
  "playerName": "Rohit Lal",
  "tournamentId": "197831",
  "totalRuns": 21
}

场景2:统计集合内所有文档的所有runsScored总和

如果需要统计全集合的总得分,使用如下聚合语句:

db.yourCollectionName.aggregate([
  {
    $group: {
      _id: null,
      allPlayersTotalRuns: { $sum: { $sum: "$score.runsScored" } }
    }
  }
])

语法说明

  • $sum运算符可以直接接收数组字段路径作为参数,自动遍历数组内所有元素累加指定字段的值,不需要额外使用$unwind拆分数组,对初学者非常友好。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 23:36:04