【MongoDB】MongoDB之聚合框架(一)

题记:

还有3天2014年结束了,这个月的计划除了总结Mongodb外其他计划都已经完成了。最近由于懒惰对于mongodb的研究暂停了好长时间。在最后的三天里,对于mongodb的研究做以总结和梳理;

一、基本概念

对于聚合框架,我在官方文档(http://docs.mongodb.org/manual/core/aggregation-introduction/)找到对它的介绍。翻译大概意思如下:

聚合是处理数据记录并且返回计算结果的操作。mongodb提供了一组强大针对数据集合进行检查和计算的聚合操作。在mongod实例中运行数据聚合可以简化应用程序代码,约束资源需求;和查询一样,在mongodb中聚合操作把文档的集合作为输入参数,以一个或者多个文档的形式返回结果。

在mongodb中使用聚合框架可以对集合中的文档进行变换和组合。基本上用多个构建创建一个管道(pipeline),用于对一连串的文档进行处理。这些构建包含筛选(filtering),投射(projecting),分组(grouping),排序(sorting),限制(limiting)和跳过(skipping).

以下是官方文档中的实例图:

二、基本操作符

比如有一个保存杂志文章的集合。你可能希望找出发表文章最多哪个作者、 假设每篇文章中被保存为MongoDB的一个文档,可以按照如下步骤创建管道。

1. 将每个文章文档中的作者投射出来

2. 将作者按照名字排序,统计每个名字出现的次数

3. 将作者按照名字出现的次数降序排列

4. 将返回结果限制为前五个

对于操作符号实例:

1. {‘$project’:{‘auther‘:1}} 这样可以把‘author’从每个文档中投射出来;执行结果后该文档会存在{‘id’:id,‘author‘:author}

2.  {‘$group‘:{‘Id:‘‘$author‘,‘count‘:{‘$sum‘:1}}}  这样就会将作者按照名字排序,某个作者名字每出现一次,就会对每个作者的count加一。

执行该步骤后,结果集合中的每个文档就是这样的结构:{"_id": "authorName","count": articleCount}

3. {"$sort": {"count":-1}}  这个操作会对结果集合中的文档根据“count”字段进行降序排列

4. {"$limit":5} 这个结果的显示为当前结果的前五个文档。

其他的操符号:http://docs.mongodb.org/manual/reference/operator/aggregation-pipeline

时间: 2024-10-03 21:53:34

【MongoDB】MongoDB之聚合框架(一)的相关文章

【MongoDB学习笔记30】MongoDB的聚合框架

使用聚合框架可以对集合中的文档进行变换和组合.用多个构件创建一个管道(pipeline),用于对一连串的文档进行处理.这些构件包括: 筛选(filtering) 投射(projecting) 分组(grouping) 排序(sorting) 限制(limiting) 跳过(skipping) 在MongoDB中实际的集合框架,需要将这些操作传给aggregate函数,例如: (1)将文档的name字段投射出来 > db.post.aggregate({$project:{"name&quo

MongoDB(4): 聚合框架

一.简介 MongoDB的聚合框架,主要用来对集合中的文档进行变换和组合,从而对数据进行分析以加以利用. 聚合框架的基本思路是: 采用多个构件来创建一个管道,用于对一连串的文档进行处理. 这些构件包括: 筛选(filtering).投影(projecting).分组(grouping).排序(sorting).限制(limiting)和跳过(skipping). 使用聚合框架的方式: db.集合.aggregate(构件1,构件2-) 注意:由于聚合的结果要返回到客户端,因此聚合结果必须限制在1

mongodb的高级操作(聚合框架)

group by 查询 不要用java驱动带的group by ,要用2.2版本后的aggregate聚合框架来搞,经过试验速度快一倍 参考 官网:http://docs.mongodb.org/manual/reference/sql-aggregation-comparison/ 实例:http://www.yeetrack.com/?p=649 观看例子前,请先看上面对的2个参考文档,特别是官网的 例子 [java] view plaincopy // 首先利$match筛选出where条

MongoDB中的聚合操作

根据MongoDB的文档描述,在MongoDB的聚合操作中,有以下五个聚合命令. 其中,count.distinct和group会提供很基本的功能,至于其他的高级聚合功能(sum.average.max.min),就需要通过mapReduce来实现了. 在MongoDB2.2版本以后,引入了新的聚合框架(聚合管道,aggregation pipeline ,使用aggregate命令),是一种基于管道概念的数据聚合操作. Name Description count Counts the num

Ruby操作MongoDB(进阶八)-聚合操作Aggregation

上篇博文讲述了排序规则collations的操作和设置方式.顺带介绍了一部分聚合aggregation的设置方式.本文继续介绍聚合操作. 聚合框架的操作处理完数据记录后在返回计算结果.集合操作将来源于多个文档的值归类到一起,这样就可疑在被归类的数据上进行多种操作,然后返回一个单独的结果 1 聚合管道 聚合管道是用于数据聚合的一个框架,是以数据处理管道概念为原型.将文档输入一个多级管道后,可疑将文档转换为聚合的结果.下面以restaurants作为数据集,通过将餐馆类归类,我们就可以使用聚合管道在

Mongodb中数据聚合之聚合管道aggregate

在之前的两篇文章<Mongodb中数据聚合之基本聚合函数count.distinct.group>和<Mongodb中数据聚合之MapReduce>中,我们已经对数据聚合提供了两种实现方式,今天,在这篇文章中,我们讲讲在Mongodb中的另外一种数据聚合实现方式--聚合管道aggregate. 面对着广大用户对数据统计的需求,Mongodb从2.2版本之后便引入了新的功能聚合框架(aggregation framework),它是数据聚合的新框架,这个概念类似于数据处理中的管道.每

在MongoDB中实现聚合函数

在MongoDB中实现聚合函数 随着组织产生的数据爆炸性增长,从GB到TB,从TB到PB,传统的数据库已经无法通过垂直扩展来管理如此之大数据.传统方法存储和处理数据的成本将会随着数据量增长而显著增加.这使得很多组织都在寻找一种经济的解决方案,比如NoSQL数据库,它提供了所需的数据存储和处理能力.扩展性和成本效率.NoSQL数据库不使用SQL作为查询语言.这种数据库有多种不同的类型,比如文档结构存储.键值结构存储.图结构.对象数据库等等. 我们在本文中使用的NoSQL是MongoDB,它是一种开

mongodb MongoDB 聚合 group

MongoDB 聚合 MongoDB中聚合(aggregate)主要用于处理数据(诸如统计平均值,求和等),并返回计算后的数据结果.有点类似sql语句中的 count(*). 基本语法为:db.collection.aggregate( [ <stage1>, <stage2>, ... ] ) 现在在mycol集合中有以下数据: { "_id" : 1, "name" : "tom", "sex" :

mongodb MongoDB 聚合 group(转)

MongoDB 聚合 MongoDB中聚合(aggregate)主要用于处理数据(诸如统计平均值,求和等),并返回计算后的数据结果.有点类似sql语句中的 count(*). 基本语法为:db.collection.aggregate( [ <stage1>, <stage2>, ... ] ) 现在在mycol集合中有以下数据: { "_id" : 1, "name" : "tom", "sex" :