如何在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
相关产品推荐
相关产品推荐

