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

如何使用Mongoose对MongoDB匹配文档的指定字段值求和

Mongoose 按字段分组统计总和实现方案

你可以直接使用 Mongoose 自带的聚合管道实现,核心用到$group分组阶段和$sum累加运算符,是当前场景下最简单的实现方式。
假设你定义的 Mongoose 模型名为ItemModel,参考代码如下:

const aggregationResult = await ItemModel.aggregate([
  {
    $group: {
      _id: "$itemNumber", // 指定按 itemNumber 字段分组
      totalQuantity: { $sum: "$quantity" } // 对同组所有文档的 quantity 字段求和
    }
  }
])

返回结果为数组结构,每个元素格式如下:

{
  _id: "对应的itemNumber取值",
  totalQuantity: 该itemNumber对应的quantity总和
}

可选拓展用法

  • 如果需要先筛选符合条件的文档再统计,可在$group前添加$match阶段,提前过滤数据提升查询效率:
const aggregationResult = await ItemModel.aggregate([
  // 示例:仅统计quantity大于0的文档
  { $match: { quantity: { $gt: 0 } } },
  {
    $group: {
      _id: "$itemNumber",
      totalQuantity: { $sum: "$quantity" }
    }
  }
])
  • 如果需要调整返回字段名,把_id还原为itemNumber,可在聚合末尾添加$project阶段:
const aggregationResult = await ItemModel.aggregate([
  {
    $group: {
      _id: "$itemNumber",
      totalQuantity: { $sum: "$quantity" }
    }
  },
  {
    $project: {
      _id: 0, // 隐藏默认_id字段
      itemNumber: "$_id", // 把分组键赋值给itemNumber字段
      totalQuantity: 1 // 保留总和字段
    }
  }
])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 12:54:04