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

MongoDB聚合:如何拆分订单书籍数组并统计单本书出现次数

解决MongoDB统计订单中书籍出现次数的问题

你的核心问题是未先将嵌套的books数组拆分为单个文档,直接按整个数组分组自然会得到错误的统计结果。以下是正确的聚合方案:

正确的聚合管道

db.Orders.aggregate([
  // 拆分books数组,每个书籍对象转为独立文档
  { $unwind: "$books" },
  // 按书籍名称分组,统计总出现次数
  { $group: { _id: "$books.name", count: { $sum: 1 } } },
  // 可选:按次数升序排序,快速定位出现次数最少的书籍
  { $sort: { count: 1 } }
])

各阶段说明

  • $unwind阶段:将每个订单的books数组拆解开,比如包含A、B、C的订单会被拆成3个独立文档,每个文档仅保留单本对应书籍的信息。
  • $group阶段:以书籍的name作为分组键,通过$sum:1统计每个分组的文档数量,也就是该书籍在所有订单中的总出现次数。
  • $sort阶段:可选步骤,按count升序排序后,结果的第一个文档即为出现次数最少的书籍。

执行结果验证

用你提供的输入数据执行上述聚合后,会得到符合预期的输出:

[
    {"_id": "B", "count": 1 },
    {"_id": "C", "count": 2 },
    {"_id": "A", "count": 3 }
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 12:15:38