Comment on page
MongoDB聚合
在本页面
聚合操作处理数据记录和 return 计算结果。聚合操作将来自多个文档的值组合在一起,并且可以对分组数据执行各种操 作以返回单个结果。 MongoDB 提供了三种执行聚合的方法:聚合管道,map-reduce function和单一目的聚合方法。
在这个例子中:
db.orders.aggregate([
{ $match: { status: "A" } },
{ $group: { _id: "$cust_id", total: { $sum: "$amount" } } }
])
最基本的管道阶段提供_过滤器_,其操作类似于查询和修改输出文档格式的_文档转换_。
管道使用MongoDB中的原生操作提供有效的数据聚合,并且是MongoDB中数据聚合的首选方法。
MongoDB 还提供map-reduce操作来执行聚合。通常,map-reduce 操作有两个阶段:一个 map 阶段,它处理每个文档并为每个输入文档发出一个或多个对象,以及将map操作的输出组合在一起的_reduce_阶段。可选地,map-reduce 可以具有最终化阶段以对结果进行最终修改。与其他聚合操作一样,map-reduce 可以指定查询条件以选择输入文档以及对结果排序和限制。
Map-reduce 使用自定义 JavaScript 函数来执行 map 和 reduce操作,以及可选的 finalize 操作。与聚合管道相比,自定义JavaScript提供了很大的灵活性,但通常情况下,map-reduce比聚合管道效率低,而且更复杂。
Map-reduce 可以在分片集合 sharded collection上运行。 Map-reduce 操作也可以输出到分片集合。有关详细信息,请参阅聚合管道和分片集合和Map-Reduce 和 Sharded Collections。
[success] 注意从 MongoDB 2.4 开始,在 map-reduce 操作中无法访问某些mongoshell 函数和属性。 MongoDB 2.4 还支持多个 JavaScript 操作以在同一时间运行。在 MongoDB 2.4 之前,JavaScript code 在单个线程中执行,引发了 map-reduce 的并发问题。
带注释的 map-reduce 操作图
所有这些操作都聚合来自单个集合的文档。虽然这些操作提供了对常见聚合过程的简单访问,但它们缺乏聚合管道和 map-reduce 的灵活性和功能。
带注释的不同操作的图表
译者:李冠飞

MongoDB中文社区—MongoDB爱好者技术交流平台
资源列表推荐 | 资源入口 |
---|---|
MongoDB中文社区官网 | |
微信服务号 ——最新资讯和优质文章 | Mongoing中文社区(mongoing-mongoing) |
微信订阅号 ——发布文档翻译内容 | MongoDB中文用户组(mongoing123) |
官方微信号 —— 官方最新资讯 | MongoDB数据库(MongoDB-China) |
MongoDB中文社区组委会成员介绍 | |
MongoDB中文社区翻译小组介绍 | |
MongoDB中文社区微信技术交流群 | 添加社区助理小芒果微信(ID:mongoingcom),并备注 mongo |
MongoDB中文社区会议及文档资源 | |
MongoDB中文社区大咖博客 | |
MongoDB白皮书 | |
MongoDB初学者教程-7天入门 | |
社区活动邮件订阅 |
最近更新 2yr ago