虚位以待(AD)
虚位以待(AD)
首页 > 数据库 > MongoDB数据库 > MongoDB数据库学习-聚集

MongoDB数据库学习-聚集
类别:MongoDB数据库   作者:码皇   来源:<a href="http://blog.csdn.net/chunyuan314" target="_blank" rel="nofollow   点击:

MongoDB数据库学习-聚集。

MongoDB数据库学习-聚集。

聚集

聚集操作处理数据记录,并返回计算结果。聚集操作从多个文档一起对数据分组,然后对分组的数据执行一系列操作,返回一个结果。MongoDB提供了3种方法来执行聚集:聚集管道、map-reduce函数和单一目的聚集方法。

聚集管道

MongoDB的聚集框架建模于数据处理管道的概念之上。文档进入一个多阶段的管道,该管道把文档转换成一个聚集结果。

最基本的管道阶段提供了过滤器,类似查询操作和文档变换,修改输出文档的格式。

其它的管道操作提供了对文档按字段进行分组和排序的工具,也提供了对数组内容聚集的工具,包括文档数组。此外,管道步骤可以对任务使用操作符,例如计算平均值,或者连接字符串。

管道使用MongoDB原生的操作提供了有效的数据聚集功能,是MongoDB中优先选用的数据聚集方法。

聚集管道可以在分片集合上操作。

在某些步骤,聚集管道可以使用索引来提高性能。此外,聚集管道有一个内部优化阶段。详情请查看管道操作符与索引聚集管道优化
这里写图片描述

Map-Reduce

MongoDB也提供了map-reduce操作来执行聚集。一般,map-reduce操作有两个阶段:map阶段,处理每个文档,对每个输入文档输出1个或多个对象;和reduce阶段,把map操作的输出组合起来。可选地,map-reduce可以有一个最终阶段:对结果做最后的修改。像其它聚集操作一样,map-reduce可以指定一个查询条件来选择输入文档,也可以排序,对结果做限制。

Map-reduce使用自定义的Javascript函数来处理map和reduce操作,可选的最终阶段也是。与聚集管道相比,Javascript 提供了极大的灵活性,一般而言,map-reduce比聚集管道效率低一点,更复杂。

Map-reduce可以在分片集合上操作,也可以输出到一个分片集合。详情请查看聚集管道与分片集合Map-Reduce与分片集合
这里写图片描述

单一目的聚集操作

MongoDB也提供了db.collection.count(),db.collection.group(),db.collection.distince()等特殊目的的数据库命令。

所有这些操作都是从单个集合来聚集文档。但是这些操作只是提供了对常用聚集过程的简单方法,它们缺乏灵活性,功能也不如聚集管道和map-reduce。
这里写图片描述

其它特性和行为

关于聚集管道、map-reduce和特殊分组功能的特性比较,查看聚集命令比较

相关热词搜索: