1. 程式人生 > >mongoDB進行分組操作

mongoDB進行分組操作

AR add lec reg project 工資 分組操作 gate avg

一、$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]}}

}

}

]

)

mongoDB進行分組操作