MongoDB如何按tags数组内的每个元素分组统计标签出现次数
MongoDB标签出现次数统计方案
你可以使用MongoDB的聚合管道实现该需求,具体语句如下:
db.collection.aggregate([ // 拆分tags数组,每个元素生成独立文档 { $unwind: "$tags" }, // 按标签值分组统计出现次数 { $group: { _id: "$tags", count: { $sum: 1 } } }, // 调整为要求的输出格式 { $replaceRoot: { newRoot: { $arrayToObject: [[{ k: "$_id", v: "$count" }]] } } } ])
执行后即可得到你需要的结果:
{"a": 2}, {"b": 2}, {"c": 2}
实现逻辑说明
$unwind会将原文档的tags数组拆解,每个数组元素对应生成一条独立文档,方便后续分组统计$group阶段按标签值分组,每匹配到相同标签就给计数加1,得到所有标签的总出现次数$replaceRoot阶段将分组结果调整为以标签名为键、统计次数为值的独立对象,匹配要求的输出格式
内容的提问来源于stack exchange,提问作者carlos de la morena
相关产品推荐
相关产品推荐

