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

如何对MongoDB集合中所有pax数组的元素总数求和?

计算MongoDB集合中所有pax数组的元素总数之和

嘿,我懂你的需求——你已经能算出单条文档里pax数组的元素个数,现在就差把所有文档的这个数值加总对吧?这在MongoDB的聚合框架里很好实现,我给你两种方案,一种分步清晰,一种高效精简:

方案一:分步实现(易懂直观)

先给每个文档新增字段存储pax数组的长度,再全局汇总求和:

db.yourCollection.aggregate([
  // 给每个文档添加paxCount字段,值为当前pax数组的元素数量
  {
    $addFields: {
      paxCount: { $size: "$pax" }
    }
  },
  // 全局分组,累加所有文档的paxCount
  {
    $group: {
      _id: null, // _id设为null表示不按任何字段分组,只做全局统计
      totalPaxElements: { $sum: "$paxCount" }
    }
  }
])

方案二:精简高效版(一步到位)

不用新增中间字段,直接在求和阶段嵌套$size操作,性能更优:

db.yourCollection.aggregate([
  {
    $group: {
      _id: null,
      totalPaxElements: { $sum: { $size: "$pax" } }
    }
  }
])

可选优化:过滤无效文档

如果集合里存在pax字段不存在、或不是数组的文档,建议先加$match阶段过滤,避免计算出错:

db.yourCollection.aggregate([
  {
    $match: {
      pax: { $exists: true, $type: "array" }
    }
  },
  {
    $group: {
      _id: null,
      totalPaxElements: { $sum: { $size: "$pax" } }
    }
  }
])

执行后你会得到类似这样的结果:

{ "_id" : null, "totalPaxElements" : 123 }

这里的totalPaxElements就是所有文档pax数组的元素总数之和啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 09:13:13