mongoDB进行分组操作

Posted 江山一族

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mongoDB进行分组操作相关的知识,希望对你有一定的参考价值。

一、$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进行分组操作的主要内容,如果未能解决你的问题,请参考以下文章

Mongodb Aggregation group()分组操作

如何在使用 MongoTemplate 进行分组期间对 mongodb 内部字段求和并推送它

java怎么做到使用mongodb来进行分组查询统

C# 操作mongodb 分组

Mongoose/Mongodb Aggregate - 对多个字段进行分组和平均

mongodb怎么对分组,不要统计