官网:https://docs.mongodb.com/manual/aggregation/#single-purpose-agg-operations

初衷:MongoDB的使用还是有一定难度的,官网讲解的一环牵扯一环,不容易一下子把握住重点,也不利于快速查询操作,所以整理一下。

聚合函数是对记录集(data records)进行操作,是把多条记录集合(group)在一起,进行处理,与此相对应的是sql的group by等操作,这是数据处理的一个方面。

MongoDB提供三种聚合方法:

  1. 聚合管道。
  2. map-reduce函数。
  3. 单一功能的聚合方法。

聚合管道

接触过linux shell的人应该对管道不会陌生,管道就是对输入的数据进行一系列的处理、转换,变成新的数据。

这里的聚合管道是对记录集进行多阶段的转换,产出新聚合结果,例如:


上图中的记录集先经过$match(匹配)阶段,再经过$group(分组)阶段,然后产出最后的结果。

Map-Reduce

map-reduce操作分为两个阶段:map阶段,处理每一条记录,产出一个或多个对象;reduce阶段,合并map阶段的输出。作为可选,map-reduce可以有一个最终阶段来对结果进行最终的操作。map-reduce也可以进行查询、排序和限制输出结果。

单一功能的聚合方法

MongoDB也提供db.collection.count()(求和)和db.collection.distinct()(去重)函数。