MongoDB学习总结(三) —— 常用聚合函数
上一篇介绍了MongoDB增删改查命令的基本用法,这一篇来学习一下MongoDB的一些基本聚合函数。
下面我们直奔主题,用简单的实例依次介绍一下。
| > count() 函数 | 
集合的count函数是最简单的聚合函数,返回集合中文档的数量。

| > distinct() 函数 | 
用于找出一个集合中,给定键的所有不同的值。

我们还可通过在数据库上运行命令,来执行distinct聚合函数,此时我们必须指定集合和键:

命令参数中,键"distinct"指定统计的集合名称,键"key"指定统计的键的名称!返回一个文档,键“value”指定统计的键在该集合中的所有值!我们还可以看出,在统计时还使用了索引。
| > group() 函数 | 
group聚合可以实现稍微复杂一些的操作,其执行过程为:先按照指定的键对集合中的文档进行分组,然后通过聚合每一组中的所有文档,来产生最终的结果文档。
下面对student集合中的age进行group,然后对每一组文档进行处理,找出对应的name。

Key: 指定要进行分组所使用的键名。
Initial: 设置初始化值,针对分组后的每一组。
$reduce:函数,第一个参数是当前的文档对象,第二个参数是文档循环的累加。根据所需的条件对每个分组进行聚合操作,每一组会有一个独立的累加器文档,记录聚合结果。
我们还可通过在数据库上运行命令

"ns": 指定集合名。
以上是对集合所有记录进行分组操作,当然还可以根据某些条件来进行分组。下面我们对name是jack,lucy,james的进行分组。

这里我们看到通过condition条件过滤,只对名字是jack,lucy,james的文档进行分组,condition这里可以使用缩写cond或者q。
另外我们看到还有一个参数finalize,这个参数目的是对$reduce聚合后的结果再次进行处理,最终得到所需的结果。
| > MapReduce 函数 | 
MapReduce是聚合里最复杂的,也是最灵活的,count,distince,group能做到的,它都能做到。
map:映射函数,将操作映射到集合中的每一个文档,集合会按照你指定的key进行映射分组。使用函数emit(key,value)
reduce:化简函数,会对map分组后的数据进行分组简化,直到每个键的列表只有一个值为止,返回结果集。
mapReduce: 最后执行函数,参数为map,reduce。
概念不好理解,看下实例就很明白了。

从这个实例可以看出,map使用 使用函数emit(key,value),根据name键进行映射分组,每个键对应数组{count:1}的键值。
然后reduce函数根据每个键所对应的键值进行相应操作。最终得到所需的结果集。
最后mapReduce函数输出这个结果集。
下面我们看看这个结果集的值。

常用的聚合函数使用就介绍到这里,下一篇学习一下索引的一些基本用法。
MongoDB学习总结(三) —— 常用聚合函数的更多相关文章
- 入门大数据---SparkSQL常用聚合函数
		一.简单聚合 1.1 数据准备 // 需要导入 spark sql 内置的函数包 import org.apache.spark.sql.functions._ val spark = SparkSe ... 
- SQL语句汇总(三)——聚合函数、分组、子查询及组合查询
		聚合函数: SQL中提供的聚合函数可以用来统计.求和.求最值等等. 分类: –COUNT:统计行数量 –SUM:获取单个列的合计值 –AVG:计算某个列的平均值 –MAX:计算列的最大值 –MIN:计 ... 
- sql中having、group by用法及常用聚合函数
		having是用在聚合函数的用法.当我们在用聚合函数的时候,一般都要用到GROUP BY 先进行分组,然后再进行聚合函数的运算.运算完后就要用到HAVING 的用法了,就是进行判断了. 注意:sele ... 
- SQL语句汇总(三)——聚合函数、分组、子查询及组合查询
		拖了一个星期,终于开始写第三篇了.走起! 聚合函数: SQL中提供的聚合函数可以用来统计.求和.求最值等等. 分类: –COUNT:统计行数量 –SUM:获取单个列的合计值 –AVG:计算某个列的平均 ... 
- Hive学习之自己定义聚合函数
		Hive支持用户自己定义聚合函数(UDAF),这样的类型的函数提供了更加强大的数据处理功能. Hive支持两种类型的UDAF:简单型和通用型.正如名称所暗示的,简单型UDAF的实现很easy,但因为使 ... 
- Oracle学习(十一)聚合函数
		AVG() 求平均数 --查询某列的平均值 SELECT AVG(列) FROM 表 COUNT()查询条数 -- 查询所有记录的条数 select count(*) from 表; -- 查询对应列 ... 
- 大数据学习day15----第三阶段----scala03--------1.函数(“_”的使用, 函数和方法的区别)2. 数组和集合常用的方法(迭代器,并行集合) 3. 深度理解函数  4 练习(用java实现类似Scala函数式编程的功能(不能使用Lambda表达式))
		1. 函数 函数就是一个非常灵活的运算逻辑,可以灵活的将函数传入方法中,前提是方法中接收的是类型一致的函数类型 函数式编程的好处:想要做什么就调用相应的方法(fliter.map.groupBy.so ... 
- mongodb学习(三)——函数使用的小技巧
		$group 下 $sum 函数 Returns a sum of numerical values. Ignores non-numeric values 只能对数字求和,非数字没有作用 查询一段时 ... 
- MongoDB学习笔记五:聚合
		『count』count是最简单的聚合工具,返回集合中的文档数量:> db.foo.count()0> db.foo.insert({"x" : 1})> db. ... 
随机推荐
- 批量删除ASP.NET中的缓存(cache)
			IDictionaryEnumerator em = HttpContext.Current.Cache.GetEnumerator(); while (em.MoveNext()) { ... 
- Linux 分区的概念
			事实上无论是linux 还是 window 都必须遵循以下分区的规则 分区类型 1.主分区:最多只能四个. 2.扩展分区: - 最多只能一个 - 主分区加扩展分区最多只能有四个 - 不能写入数据,它存 ... 
- IOS开发之IOS8.0最新UIAlertController                                                    分类:            ios技术             2015-01-20 14:24    144人阅读    评论(1)    收藏
			最近苹果更新的IOS8 对以前进行了很大的修改, 更新的API也让人捉急,据说iOS 8的新特性之一就是让接口更有适应性.更灵活,因此许多视图控制器的实现方式发生了巨大的变化.比如全新的UIPrese ... 
- STM32F10X SPI操作flash MX25L64读写数据(转)
			源:STM32F10X SPI操作flash MX25L64读写数据 前一段时间在弄SPI,之前没接触过嵌入式外围应用,就是单片机也只接触过串口通信,且也是在学校的时候了.从离开手机硬件测试岗位后,自 ... 
- XP Mode 虛擬機器 for Windows 7
			免驗證官方直接下載 官網 Download Windows Virtual PC XP Mode for Windows 7 性質 Windows 7 免費 / en 多國 繁體中文(Traditio ... 
- bzoj2599
			2599: [IOI2011]Race Time Limit: 70 Sec Memory Limit: 128 MBSubmit: 2476 Solved: 733[Submit][Status ... 
- Apache/nginx转发设置-分布式部署
			Apache转发设置1. Weblogic安装 Weblogic8和Weblogic10默认安装,选择完全安装即可,如果是Weblogic9则选择自定义安装,勾选WebService plugin 2 ... 
- 为mysql 表重新设置自增的主键id
			1,删除原有主键: ALTER TABLE `table_name` DROP `id`; 2,添加新主键字段: ALTER TABLE `table_name` ADD `id` INT NOT N ... 
- wildfly 如何设置外网访问
			wildfly的默认配置是不支持外网访问的, 要想实现外网访问需要修改standalone.xml配置文件. 配置文件所在路径:wildfly/standalone/configuration/sta ... 
- java 错误 classes路径配置错误
			1. 错误显示页 2. 解决步骤 2.1. 查看 root cause 信息 org.springframework.beans.factory.BeanCreationException: Erro ... 
