如何获取MongoDB集合中使用频次最高的产品分类?
MongoDB 获取频次最高的产品分类解决方案
需求说明
统计集合中各产品分类的出现频次,返回频次最高的分类及其计数,输出格式需适配前端展示:
[ { "category": "分类名", "total": 数量 } ]
聚合查询代码
使用MongoDB聚合管道实现需求,执行以下命令(将collection替换为你的集合名称):
db.collection.aggregate([ // 展开products数组,将每个产品转为独立文档 { $unwind: "$products" }, // 按产品分类分组,统计每个分类的出现次数 { $group: { _id: "$products.productId.category", total: { $sum: 1 } } }, // 按统计次数降序排序,频次最高的排在首位 { $sort: { total: -1 } }, // 仅保留频次最高的一条结果 { $limit: 1 }, // 调整输出字段格式,匹配需求 { $project: { _id: 0, category: "$_id", total: 1 } } ])
各阶段说明
- $unwind:拆分文档中的
products数组,让每个产品成为单独的文档,为后续分组统计做准备。 - $group:以
productId.category作为分组键,通过$sum:1累计每个分类的出现次数。 - $sort:按统计得到的
total字段降序排列,确保频次最高的分类处于结果集的第一位。 - $limit:只保留排序后的第一条数据,即频次最高的分类。
- $project:重新构造输出结构,移除默认的
_id字段,将分组键_id重命名为category,保留total字段,完全匹配期望的输出格式。
执行结果
针对提供的示例数据,执行上述查询后将返回:
[ { "category": "CEIS", "total": 2 } ]
内容的提问来源于stack exchange,提问作者Zurcemozz
相关产品推荐
相关产品推荐

