将集合中的文档分组,可用于统计结果
_id表示分组的依据,使用某个字段的格式为'$字段'
例1:统计男生、女生的总人数
db.stu.aggregate([ {$group: { _id:'$gender', counter:{$sum:1} } } ])
Group by null
将集合中所有文档分为一组
例2:求学生总人数、平均年龄
db.stu.aggregate([ {$group: { _id:null, counter:{$sum:1}, avgAge:{$avg:'$age'} } } ])
透视数据
例3:统计学生性别及学生姓名
db.stu.aggregate([ {$group: { _id:'$gender', name:{$push:'$name'} } } ])
使用$$ROOT
可以将文档内容加入到结果集的数组中,代码如下
db.stu.aggregate([ {$group: { _id:'$gender', name:{$push:'$$ROOT'} } } ])