聚合

聚合操作将来自多个文档分组在一起,并可以对分组数据执行各种操作,然后返回单个结果。

MongoDB提供了三种聚合方式:

  • Aggregation Pipeline
  • Map-Reduce Function
  • Single Purpose Aggreation Methods

Aggregations Pipeline

聚合管道主要用于对数据的查询,转换和修改。

格式:

1
2
3
4
db.orders.aggregate([
{ $match: { status: "A" } },
{ $group: { _id: "$cust_id", total: { $sum: "$amount" } } }
])

基础的聚合使用 聚合操作 来进行查询。聚合操作也可以在分布式集合(Sharding Collection)中使用。

优化:

聚合管道还可以通过索引来优化性能。

Single Purpose Aggregation Operations

Mongodb 使用 estimateDocumentCount()count()distinct() 来从集合中聚合文档。

Map-Reduce

从 5.0 开始,map-reduce 已经弃用。

Map-reduce 操作将大量的数据转成有用的聚合数据。