一,$group 进行分组
1, 每个职位的雇员人数:
- db.getCollection('emp').aggregate(
- [
- {'$group':{
- '_id':'$job',
- job_count:{'$sum':1}
- }
- }
- ]
- )
2, 每个职位的总工资
- db.getCollection('emp').aggregate(
- [
- {'$group':{
- '_id':'$job',
- job_salaryt:{'$sum':'$salary'}
- }
- }
- ]
- )
3, 每个职位的平均工资
- db.getCollection('emp').aggregate(
- [
- {'$group':{
- '_id':'$job',
- job_salaryt:{'$sum':'$salary'},
- job_salary_avg:{'$avg':'$salary'}
- }
- }
- ]
- )
4, 每种职位的最高与最低工资
- db.getCollection('emp').aggregate(
- [
- {'$group':{
- '_id':'$job',
- max_salaryt:{'$max':'$salary'},
- min_salary:{'$min':'$salary'}
- }
- }
- ]
- )
5, 每个职位的工资
- db.getCollection('emp').aggregate(
- [
- {
- '$group':{
- '_id':'$job',
- 'salary_data':{'$push':'$salary'}
- }
- }
- ]
- )
6, 每个职位的人员
- db.getCollection('emp').aggregate(
- [
- {
- '$group':{
- '_id':'$job',
- 'position_name':{'$addToSet':'$name'} //addToSet, 如果有重复的人名, 保留一个
- }
- }
- ]
- )
二,$project 进行数据的规则显示
1, 别名
- db.getCollection('emp').aggregate(
- [
- {'$project':{
- '_id':0
- '职位':'$job',
- 'name':1
- }
- }
- ]
- )
2, 年薪
- db.getCollection('emp').aggregate(
- [
- {
- '$project':{
- 'name':1,
- 'salary':{'年薪':{'$multiply':['$salary',12]}}
- }
- }
- ]
- )
来源: http://www.bubuko.com/infodetail-2605845.html