MongoDB如何使用$group按字段分组,聚合统计对应唯一值列表
实现方案
你需要在$group阶段搭配$addToSet操作符实现分组后收集唯一值,具体聚合语句如下:
// 将your_collection替换为你实际使用的集合名 db.your_collection.aggregate([ { $group: { _id: "$iphone", people: { $addToSet: "$name" } } } ])
逻辑说明
- 分组依据
_id设置为$iphone,表示所有iphone字段值相同的文档会被归为同一组 $addToSet是MongoDB聚合的数组操作符,作用是将指定字段的值加入数组时自动去重,恰好满足你统计分组内唯一姓名的需求。如果你之前用$push得到的结果有重复姓名,替换为$addToSet即可解决。
可选扩展
如果需要对分组结果按iphone型号排序,可以在聚合管道末尾新增$sort阶段:
db.your_collection.aggregate([ { $group: { _id: "$iphone", people: { $addToSet: "$name" } } }, { $sort: { _id: 1 } // 1为升序,-1为降序 } ])
内容的提问来源于stack exchange,提问作者ray
相关产品推荐
相关产品推荐

