MongoDB-CN-Manual
搜玢
⌃K

MongoDB聚合

圚本页面
聚合操䜜倄理数据记圕和 return 计算结果。聚合操䜜将来自倚䞪文档的倌组合圚䞀起并䞔可以对分组数据执行各种操䜜以返回单䞪结果。 MongoDB 提䟛了䞉种执行聚合的方法聚合管道map-reduce function和单䞀目的聚合方法。

聚合管道

MongoDB 的Aggregation framework是以数据倄理管道的抂念䞺蓝本的。文档进入倚阶段管道将文档蜬换䞺聚合结果。䟋劂
圚这䞪䟋子䞭
db.orders.aggregate([
{ $match: { status: "A" } },
{ $group: { _id: "$cust_id", total: { $sum: "$amount" } } }
])
第䞀阶段$match阶段按status字段过滀文档并将status等于"A"的文档䌠递到䞋䞀阶段。
第二阶段$group阶段按cust_id字段将文档分组以计算每䞪唯䞀倌cust_id的金额总和。
最基本的管道阶段提䟛_过滀噚_其操䜜类䌌于查询和修改蟓出文档栌匏的_文档蜬换_。
其他管道操䜜提䟛了甚于按特定字段对文档进行分组和排序的工具以及甚于汇总包括文档数组圚内的数组内容的工具。及倖管道阶段可以将运算笊甚于诞劂计算平均倌或连接字笊䞲之类的任务。
管道䜿甚MongoDB䞭的原生操䜜提䟛有效的数据聚合并䞔是MongoDB䞭数据聚合的銖选方法。
聚合管道可以圚分片集合 sharded collection䞊运行。
聚合管道可以䜿甚玢匕来改善其某些阶段的性胜。歀倖聚合管道具有内郚䌘化阶段。有关诊细信息请参阅管道操䜜和玢匕和聚合管道䌘化。

Map-Reduce

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 的灵掻性和功胜。
垊泚释的䞍同操䜜的囟衚

附加功胜和行䞺

有关聚合管道 map-reduce 和特殊组功胜的特性比蟃请参阅聚合呜什比蟃。
译者李冠飞

MongoDB䞭文瀟区

MongoDB䞭文瀟区—MongoDB爱奜者技术亀流平台
资源列衚掚荐
资源入口
MongoDB䞭文瀟区官眑
埮信服务号 ——最新资讯和䌘莚文章
Mongoing䞭文瀟区mongoing-mongoing
埮信订阅号 ——发垃文档翻译内容
MongoDB䞭文甚户组mongoing123
官方埮信号 —— 官方最新资讯
MongoDB数据库MongoDB-China
MongoDB䞭文瀟区组委䌚成员介绍
MongoDB䞭文瀟区翻译小组介绍
MongoDB䞭文瀟区埮信技术亀流矀
添加瀟区助理小芒果埮信ID:mongoingcom并倇泚 mongo
MongoDB䞭文瀟区䌚议及文档资源
MongoDB䞭文瀟区倧咖博客
MongoDB癜皮乊
MongoDB初孊者教皋-7倩入闚
瀟区掻劚邮件订é˜