聚合操作处理数据并返回计算后的结果。它将来自多个文档的值组合在一起,并且可以对分组数据执行各种操作以返回单个结果。MongoDB提供了三种执行聚合的方式:聚合管道、map-reduce函数、和单用途聚合方法。
聚合管道
MongoDB的聚合基于管道的概念。文档进入一个多段管道,被转化为聚合后的结果。
最基本的管道阶段提供过滤器(filters)进行查询和文档转换(修改文档的输出格式)。其他管道提供文档的分组、排序,以及用于聚合数组内容的工具。此外,管道阶段还可以使用运算符完成计算平均值或拼接字符串之类的任务。
管道利用MongoDB的原生运算来提供高效的数据聚合,也是执行数据聚合的首先方法。
聚合管道可以使用索引来提高某些阶段的性能。此外,聚合管道有一个内部优化阶段。有关详细信息,请参阅 管道运算符和索引以及 聚合管道优化
MongoDB提供了db.collection.aggregate()
和db.aggreate()
方法用于管道聚合操作。这两个方法接收阶段运算符的数组,然后文档依次通过这些阶段: