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

MongoDB中统计对象数组内各值的出现次数

MongoDB 统计流派出现次数的实现方案

针对你需要统计books集合中各流派出现次数的需求,可以通过MongoDB的聚合管道来实现,具体步骤如下:

聚合查询代码

db.books.aggregate([
  // 拆分genres数组,每个流派单独成为一条文档
  { $unwind: "$genres" },
  // 按流派id分组,统计出现次数
  {
    $group: {
      _id: "$genres.id",
      count: { $sum: 1 }
    }
  },
  // 调整输出格式,匹配需求结构
  {
    $project: {
      _id: 0,
      id: "$_id",
      count: 1
    }
  },
  // 可选:按出现次数降序排序,和示例输出顺序一致
  { $sort: { count: -1 } }
])

各阶段作用说明

  • $unwind:将每个书籍文档中的genres数组拆分为多条独立文档,比如包含2个流派的书籍会被拆成2条记录,每条对应一个流派。
  • $group:以流派的id作为分组标识,用$sum:1统计每个分组的文档数量,也就是该流派的出现次数。
  • $project:重构输出结构,隐藏默认的_id字段,将分组用的_id重命名为id,仅保留需求指定的id和count字段。
  • $sort:可选阶段,按count降序排列结果,让高频流派排在前面,和你给出的示例输出顺序完全匹配。

执行上述查询后,将得到预期结果:

[
  { "id": 1, "count": 2 },
  { "id": 2, "count": 1 },
  { "id": 3, "count": 1 }
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 10:06:02