MongoDB聚合操作中如何按Info与Date双条件分组?
MongoDB聚合多字段分组实现方法
要实现按Info和Date双字段分组,只需在$group阶段的_id中传入包含多个字段的文档即可,具体调整如下:
修改后的聚合管道代码
.aggregate([ { "$match" : { "$or": [{"status": "downloading"}, {"status": "calculating"}]}}, { "$project": {"Id": 1, "Date": 1, "Info": 1}}, // 统一字段名大小写,与数据集匹配 { "$group" : { "_id" : { "Info": "$Info", "Date": "$Date" }, // 用文档指定多分组字段 "Id" : { "$addToSet" : "$Id"} }}, { "$project": { "_id": 0, "Info": "$_id.Info", // 从分组标识中提取Info字段 "Date": "$_id.Date", // 从分组标识中提取Date字段 "Id": 1 }} ])
关键修改说明
- $group阶段:将原单一字段的
_id: "$Info"替换为包含Info和Date的组合文档,MongoDB会基于两个字段的共同值完成分组。 - $project阶段:新增
"Date": "$_id.Date"配置,将分组依据中的Date字段提取为结果的顶层字段,同时保留原有的Info和Id处理逻辑。
最终输出结果
执行上述代码后,将得到符合预期的分组结果:
[ {"Id": ["1","4","5"], "Info": "X", "Date": "10/1"}, {"Id": ["2", "6"], "Info": "X", "Date": "13/2"}, {"Id": ["3"], "Info": "Y", "Date": "13/2"} ]
内容的提问来源于stack exchange,提问作者Pep
相关产品推荐
相关产品推荐

