如何在MongoDB聚合管道的group阶段使用正则合并关键词统计?
解决MongoDB聚合中大小写关键词合并统计的问题
你可以通过在聚合分组阶段将关键词统一转换为小写(或大写),实现大小写不同的相同关键词合并统计。修改后的聚合管道如下:
pipeline = [ {'$unwind': '$main_keywords'}, # 将关键词转为小写后作为分组依据,合并大小写不同的条目 {'$group': {'_id': {'$toLower': '$main_keywords'}, 'count': {'$sum': 1}}}, {'$sort': {'count': -1}}, # 可选:如果希望输出的关键词为首字母大写格式,添加此阶段 { '$project': { '_id': 0, 'keyword': { '$concat': [ {'$toUpper': {'$substrCP': ['$_id', 0, 1]}}, {'$substrCP': ['$_id', 1, -1]} ] }, 'count': 1 } } ] streamdata = db.objects.aggregate(pipeline)
代码说明:
$unwind:和原逻辑一致,将main_keywords数组拆分为单独的文档条目。$group:使用$toLower操作符将每个关键词转换为小写,以此作为分组的_id,这样Corona和corona都会被转换为corona,实现合并统计。- 可选
$project:如果需要将输出的关键词恢复为首字母大写的格式(比如显示为Corona而不是corona),可以通过$substrCP截取首字母并转为大写,再拼接剩余小写部分,同时重命名字段为更直观的keyword。
执行上述管道后,你会得到合并后的统计结果,比如Corona和corona的总数会合并为一条,计数为98+91=189。
内容的提问来源于stack exchange,提问作者Mert Öztürk
相关产品推荐
相关产品推荐

