官网:https://docs.mongodb.com/manual/aggregation/#single-purpose-agg-operations。
初衷:MongoDB的使用还是有一定难度的,官网讲解的一环牵扯一环,不容易一下子把握住重点,也不利于快速查询操作,所以整理一下。
聚合函数是对记录集(data records)进行操作,是把多条记录集合(group)在一起,进行处理,与此相对应的是sql的group by等操作,这是数据处理的一个方面。
MongoDB提供三种聚合方法:
- 聚合管道。
- map-reduce函数。
- 单一功能的聚合方法。
聚合管道
接触过linux shell
的人应该对管道不会陌生,管道就是对输入的数据进行一系列的处理、转换,变成新的数据。
这里的聚合管道是对记录集进行多阶段的转换,产出新聚合结果,例如:
上图中的记录集先经过$match
(匹配)阶段,再经过$group
(分组)阶段,然后产出最后的结果。
Map-Reduce
map-reduce操作分为两个阶段:map阶段,处理每一条记录,产出一个或多个对象;reduce阶段,合并map阶段的输出。作为可选,map-reduce可以有一个最终阶段来对结果进行最终的操作。map-reduce也可以进行查询、排序和限制输出结果。
单一功能的聚合方法
MongoDB也提供db.collection.count()
(求和)和db.collection.distinct()
(去重)函数。