MongoDB-聚合操作
对文档的筛选结果进行整理统计
聚合操作
对文档的筛选结果进行整理统计
db.collection.aggregate()
功能 : 完成聚合操作
参数 : 聚合条件 —》 聚合操作符
聚合操作符
$group 分组聚合 需要配合具体的分组统计选项
$sum : 求和
e.g.
db.class0.aggregate({$group:{_id:'$gender',num:{$sum:1}}})
db.class0.aggregate({$group:{_id:'$gender',num:{$sum:'$age'}}})
$avg : 求平均数
e.g. db.class0.aggregate({$group:{_id:'$gender',avg:{$avg:'$age'}}})
$max 求最大值
e.g.
db.class0.aggregate({$group:{_id:'$gender',max:{$max:'$age'}}})
$min 求最小值
e.g.
db.class0.aggregate({$group:{_id:'$gender',min:{$min:'$age'}}})
$project
修改文档的显示效果
e.g. project值得用法和find函数field格式一致
db.class0.aggregate({$project:{_id:0,name:1,age:1}})
db.class0.aggregate({$project:{_id:0,Name:’$name’,Age:’$age’}})
$match
数据筛选
$match值得用法同query一致
e.g. 过滤年龄大于18岁的数据文档
db.class0.aggregate({$match:{age:{$gt:18}}})
$limit
筛选前几条文档
e.g. 筛选前三条数据文档
db.class0.aggregate({$limit:3})
$skip
跳过几条文档显示
e.g. 跳过前三条文档
db.class0.aggregate({$skip:3})
$sort
将数据排序
e.g. 按照年龄排序
db.class0.aggregate({$sort:{age:1}})
聚合管道
聚合管道指的是将上一个聚合的操作结果给下一个聚合继续操作
db.collection.aggregate([{聚合},{},{}…])
e.g. match –> project –> sort
db.class0.aggregate([{$match:{gender:’m’}},{$project:{_id:0}},{$sort:{age:1}}])
e.g. group —> match 找到重名学生
db.class0.aggregate([{$group:{_id:’$name’,num:{$sum:1}}},{$match:{num:{$gt:1}}}])