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

}

}

]

)

3.判断职位,返回-1 或0

db.getCollection('emp').aggregate(

[

{'$project':{

'_id':0,

'name':1,

'职位':'$job',

'job':{'$strcasecmp':['$job','manager']}

}

}

]

)

三、$macth、$group、$project综合操作

db.getCollection('emp').aggregate(

[

   {  $match:{

     salary:{

{'$gte':1000,'$lte':30000}

     }

   }

},

    {

$project:{

{ '_id':1,

'name':1,

'salary':1,

'job':1

}

}

},

   {

$group:{

{'_id':'$job','count':{'$sum':1},'avg':{'$avg':'$salary'}}

      }

   },

   {sort:{'count':-1}}

]

四、$add ,$sum,$group,$sum,$match,$substr

db.photo.aggregate([{
$match: {
siteId: {
$in: datas.parks
},
'shootOn': {
$gte: minT,
$lte: maxT
}
}
}, {
$project: {
siteId: 1,
shootOn: 1,
locationId: 1,
saleNum: {
$size: '$orderHistory'
}
}
}, {
$group: {
_id: {
year: {
$year: {
$add: ['$shootOn', 28800000]
}
},
month: {
$month: {
$add: ['$shootOn', 28800000]
}
},
day: {
$dayOfMonth: {
$add: ['$shootOn', 28800000]
}
},
location: '$locationId'
},
count: {
$sum: '$saleNum'
}
}
}, {
$project: {
_id: 0,
locationId: '$_id.location',
saleInfo: {
day: {
'$concat': [{
$substr: ['$_id.year', 0, 4]
}, '/', {
$substr: ['$_id.month', 0, 2]
}, '/', {
$substr: ['$_id.day', 0, 2]
}]
},
count: '$count',
}
}
}, {
$group: {
_id: '$locationId',
saleInfo: {
$addToSet: '$saleInfo'
}
}
}])
db.order.aggregate([{
$match: {
siteId: {
$in: parks
},
'payInfo.payTime': {
$gte: minT,
$lte: maxT
},
'orderStatus.status':5
}
}, {
$group: {
_id: {
year: {
$year: {
$add: ['$payInfo.payTime', 28800000]
}
},
month: {
$month: {
$add: ['$payInfo.payTime', 28800000]
}
},
day: {
$dayOfMonth: {
$add: ['$payInfo.payTime', 28800000]
}
},
siteId: '$siteId'
},
count: {
$sum: 1
},
sales: {
$sum: '$charge'
}
}
}, {
$project: {
_id: 0,
count: '$count',
sales: '$sales',
siteId: '$_id.siteId',
day: {
'$concat': [{
$substr: ['$_id.year', 0, 4]
}, '/', {
$substr: ['$_id.month', 0, 2]
}, '/', {
$substr: ['$_id.day', 0, 2]
}]
}
}
}])

  

mongoDB进行分组操作的更多相关文章

  1. Java对MongoDB进行分组操作并统计各个分组的数量

    最近在检索MongoDB的数据时需要用到分组操作,由于没有现成的说明文档可参考,只能是在代码中不断调试.摸索前进:目前已现实了Java对MongoDB的分组操作,并统计各个分组的数量.现通过示例详细解 ...

  2. MongoDB 的分组操作 In C#

    C#对mongodb的分组查询操作,主要通过脚本或Aggregate方法来实现,以下通过一些实例作解析: 参考资料:http://www.tuicool.com/articles/2iqUZj   h ...

  3. springboot 学习之路 14(整合mongodb的Api操作)

    springboot整合mongodb: mongodb的安装和权限配置  请点击连接参考 mongodb集成 : 第一步:引如pom文件 第二步:配置文件配置mongodb路径: 第三步:关于mon ...

  4. MongoDB的聚合操作以及与Python的交互

    上一篇主要介绍了MongoDB的基本操作,包括创建.插入.保存.更新和查询等,链接为MongoDB基本操作. 在本文中主要介绍MongoDB的聚合以及与Python的交互. MongoDB聚合 什么是 ...

  5. mongodb group php 操作

    紧接着上篇来,这篇主要讲,mongodb的group功能,做的还是挺强大的,相当对于find(),skip(),distinct()等,用法比较复杂. 测试数据 > db.fruit.find( ...

  6. MongoDB 的聚集操作

    聚合引言 聚集操作就是出来数据记录并返回计算结果的操作.MongoDB提供了丰富的聚集操作.可以检測和执行数据集上的计算.执行在mongod上的数据聚集简化了代码和资源限制. 像查询一样,在Mongo ...

  7. mongodb的聚合操作

    在mongodb中有时候我们需要对数据进行分析操作,比如一些统计操作,这个时候简单的查询操作(find)就搞不定这些需求,因此就需要使用  聚合框架(aggregation) 来完成.在mongodb ...

  8. 【翻译】MongoDB指南/CRUD操作(二)

    [原文地址]https://docs.mongodb.com/manual/ MongoDB CRUD操作(二) 主要内容: 更新文档,删除文档,批量写操作,SQL与MongoDB映射图,读隔离(读关 ...

  9. 【翻译】MongoDB指南/CRUD操作(一)

    [原文地址]https://docs.mongodb.com/manual/ MongoDB CRUD操作(一) 主要内容:CRUD操作简介,插入文档,查询文档. CRUD操作包括创建.读取.更新和删 ...

随机推荐

  1. C# 关于用7zip压缩文件提示win32exception 系统找不到文件解决方案(win7 x64)

    网上已经很多这方面的资料了,我就简单的说下好了 为了方便以后的查看 --------------------- 1.需要下载7zSharp:http://7zsharp.codeplex.com/re ...

  2. Python3学习笔记22-文件读写

    读写文件前,我们先必须了解一下,在磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不允许普通的程序直接操作磁盘,所以,读写文件就是请求操作系统打开一个文件对象(通常称为文件描述符),然后,通过操 ...

  3. windows下设置计划任务自动执行PHP脚本

    背景: 环境部署在linux下或者windows中,可以使用windows的自动任务设置自动执行脚本执行一些日常运维任务 图形界面设置相对比较简单 准备工作: wamp(集成的PHP执行环境) 已经写 ...

  4. CentOS 6.5环境实现corosync+pacemaker实现DRBD高可用

    DRBD (Distributed Replicated Block Device)分布式复制块设备,它是 Linux 平台上的分散式储存系统,通常用于高可用性(high availability, ...

  5. [HTML]点击按钮,页面总是跳回顶端的解决方法(Clicking an button,always resets the view to top of page)

    1 前言 当网页页面较长或者表单较多时,右侧会出现滚动条,然而经常会出现点击底部的<button>按钮或者<a>超链接,会出现点击后,当前页面会回到顶端. 2 方案 例如样例代 ...

  6. oracle 进阶之model子句

    本博客是自己在学习和工作途中的积累与总结,仅供自己参考,也欢迎大家转载,转载时请注明出处. http://www.cnblogs.com/king-xg/p/6692841.html 一,  mode ...

  7. JavaScript中的事件冒泡?事件传播的解释

    注:本文来源  可译网 事件冒泡是你在学习javaScript旅途中遇到的一个术语,它涉及到当一个元素被另一个元素嵌套时调用事件处理的顺序,并且两个元素注册了同一个事件(例如,点击事件). 但是事件冒 ...

  8. 约数 求反素数bzoj1053 bzoj1257

    //约数 /* 求n的正约数集合:试除法 复杂度:O(sqrt(n)) 原理:扫描[1,sqrt(N)],尝试d能否整除n,若能,则N/d也能 */ ],m=; ;i*i<=n;i++){ ){ ...

  9. hdu1517 巴什博奕变换

    //没必要递推sg,直接巴什博奕即可 /* 先手面对[n/2,n/9]必胜,即后手面对n/18必败 同理,后手面对n/18^2必败... 那么能否使后手面对n/18^k的局势,在于n/18^k是否在[ ...

  10. uva12436 回头再做一次

    线段树维护等差数列,结点维护首项+公差即可 #include <cstdio> #include <cstring> #include <algorithm> us ...