设为首页 收藏本站
查看: 922|回复: 0

[经验分享] MongoDB聚合介绍

[复制链接]

尚未签到

发表于 2018-10-26 10:36:51 | 显示全部楼层 |阅读模式
  MongoDB聚合介绍
  
  翻译自:http://docs.mongodb.org/manual/core/aggregation-introduction/
  聚合是处理数据记录和返回计算结果的操作。MongoDB提供了丰富的聚合操作集合,以对数据集检测和实施计算。在mongod实例上运行数据集合,简化了应用代码,限制了资源的使用。
  像查询一样,在MongoDB中聚合操作使用文档的集合作为输入,以一个或多个文档的形式返回结果。
  聚合方式
  
  聚合管道
  
  MongoDB 2.2引入了一个新的聚合框架,以数据处理管道为主题建模。文档进入多级管道,转换为一个聚合结果。
  最基本管道级提供像查询操作的过滤,和文档转换以修改输出文档的形式。
  其他管道操作通过指定一个或多个字段提供分组和排序文档的工具,以及聚合包含文档的数组的内容的工具。此外,管道级可以对任务使用像计算平均数或连接字符串的操作符。
  在MongoDB中管道使用本地操作提供有效的数据聚合,是数据聚合的更好方式。
DSC0000.jpg

  Map-Reduce
  
  MongoDB也提供了map-reduce操作来实施聚合。通常,map-reduce操作有两个阶段:map阶段处理每个文档,对于每个输入文档输出一个或多个对象;reduce阶段组合map操作的输出。可选的,map-reduce可以有一个finalize级,以对结果做最后的修改。像其他聚合操作,map-reduce可以指定一个查询条件来查询输入文档以及排序和限制结果。
  Map-reduce使用客户端JavaScript函数来实施map和reduce操作,以及可选的finalize操作。而客户端JavaScript相对聚合管道提供更大的伸缩性,通常,map-reduce更低效,比聚合管道更复杂。
  注意:
  从MongoDB 2.4开始,某些mongo shell功能和属性在map-reduce操作中不可访问。MongoDB 2.4也提供了在相同时间运行多个JavaScript操作的支持。在MongoDB 2.4之前,JavaScript代码以单线程执行,导致了map-reduce的并行问题。
DSC0001.jpg

  单一目的聚合操作
  
  对于大量的普通单一目的聚合操作,MongoDB提供了特定目的的数据库命令。这些普通的聚合操作是:返回匹配文档的记录数,返回一个字段的不通值,基于一个字段值分组数据。所有这些操作从一个单一集合聚合文档。而这些操作提供普通聚合处理的单一访问,它们缺乏聚合管道和map-reduce的伸缩性和扩展性。
DSC0002.jpg

  额外的属性和行为
  
  聚合管道和map-reduce都可以在分片集合上操作。Map-reduce操作也可以输出为分片集合。更多信息,可以查看《聚合管道和分片集合》和《Map-Reduce和分片集合》。
  聚合管道可以使用索引来在某些级上提供性能。此外,聚合管道也有内部的优化方面。更多信息,可以查看《管道操作符和索引》和《聚合管道优化》。
  对于聚合管道,map-reduce,和特定的分组功能的属性比较,可以查看《聚合命令比较》。
  额外资源
  

  •   MongoDB Analytics: Learn Aggregation by Example: Exploratory Analytics and Visualization Using Flight Data
  •   MongoDB for Time Series Data: Analyzing Time Series Data Using the Aggregation Framework and Hadoop
  •   The Aggregation Framework
  •   Webinar: Exploring the Aggregation Framework
  •   Quick Reference Cards


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-626671-1-1.html 上篇帖子: mongodb优化预读 下篇帖子: mongodb建索引引起的问题
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表