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

如何在MongoDB&Mongoose中获取文档指定字段并聚合商品统计数据

MongoDB 聚合查询实现方案

你可以使用以下聚合查询语句实现需求:

db.collection.aggregate([
  // 拆分products数组,每个商品生成独立文档
  { $unwind: "$products" },
  // 按商品名称分组,累加数量,保留价格
  {
    $group: {
      _id: "$products.name",
      price: { $first: "$products.price" },
      totalQuantity: { $sum: "$products.quantity" }
    }
  },
  // 调整输出字段格式,匹配要求的返回结构
  {
    $project: {
      _id: 0,
      name: "$_id",
      price: 1,
      quantity: "$totalQuantity"
    }
  }
])

逻辑说明

  • $unwind阶段:将每个订单文档内嵌的products数组拆分为多条独立的商品文档,为后续统计做准备
  • $group阶段:以商品名称为分组唯一键,用$sum运算符累加同名称商品的总购买数量;因为同名商品定价一致,用$first提取对应价格即可
  • $project阶段:重命名字段、剔除不需要的系统默认_id字段,输出和要求完全匹配的结构

补充说明:上述查询默认同名商品的价格统一,如果你的业务场景中存在同名称不同定价的情况,可根据需要调整$group阶段中price的取值逻辑,比如用$avg取平均价格、$max取最高价格等。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 07:15:07