单一目的聚集操作

聚集指的是,基于一个输入和特定程序来计算结果的数据操纵操作的广泛类别。

MongoDB提供了大量在结果集上执行特定聚集操作的聚集操作方法。

尽量在使用范围上有限制,特别是和聚集管道、map-reduce相比较,但这些操作,为常规的数据处理提供了直接的语义。

Count

MongoDB可以返回符合一个query的文档数量。count命令,以及count()和cursor.count()方法提供访问mongo shell里面的计数(counts)。

例子:

假设一个名叫records的集合,仅有下面这些文档:

{ a: 1, b: 0 }
{ a: 1, b: 1 }
{ a: 1, b: 4 }
{ a: 2, b: 2 }

下面的操作会计算在集合里面的所有文档的数目,并返回4

db.records.count()

下面的操作只会对a字段值为1计数,返回结果为3

db.records.count( { a: 1 } )

译者注:

很多朋友可能对上面的shell脚本转化成实际编程语言感动困难。实际上,mongoDB提供的API都很友好,和上面的shell基本有对应关系。以Java为例,

// db是取得的数据库
DBCollection collection = db.getCollection("record");
BasicDBObject query = new BasicDBObject();
query.put("a",1);
int result = collection.count(query);

再举个例子,笔者最近做的一个项目,有这个一个需求:统计当天新注册用户量。

query.put("registertime",new BasicDBObject("$gt",HeartDateUtil.getStartDateOfToday()));
collection.count(query);

其中HeartDateUtil.getStartDateOfToDay是一个工具方法,用来返回今天开始的Date.

Distinct

Distinct操作匹配查询的文档,返回在匹配文档里该字段的所有唯一值。在Mongo shell里面提供了distinct命令和db.collection.distinct()方法。考虑下面的操作:

单一目的聚集操作

时间: 2024-12-21 18:09:32

单一目的聚集操作的相关文章

MongoDB 的聚集操作

聚合引言 聚集操作就是出来数据记录并返回计算结果的操作.MongoDB提供了丰富的聚集操作,能够检测和执行数据集上的计算.运行在mongod上的数据聚集简化了代码和资源限制. 像查询一样,在Mongo的聚合操作使用collections作为输入,并返回一个或多个document作为输出. 聚合模式 聚合管道 MongoDB2.2引入了一个新的聚合框架:聚合管道,这是基于数据处理管道概念的模型.文档输入一个多阶段的管道并将文档转化为一个聚合的结果. 最基本的管道阶段提供了过滤器(Filters)来

Java:聚集操作

你使用集合的目的是什么?当然不是为了简单的存储然后置之不理,你是为了从集合取数据和操作数据的. 再次考虑前一篇文章提到的背包类, 如果要打印所有背包的重量, for(Package p : packages) System.out.println(p.getWeight()); 遍历,可以使用"forEach"这一聚集操作, packages.stream() .forEach(e -> System.out.println(p.getWeigh()); 看不懂语法不要紧.我们再

Java : 聚集操作(2)

不像reduce操作,每处理一个元素就会产生一个新值,collect方法只更新已有的值. 还是假设要求背包的平均重量,你需要哪些值?总重量和总个数.你可以新建一个数据类型包含并追踪这两个变量. class Averager implements IntConsumer { private int total = 0; private int count = 0; public double average() { return count > 0 ? ((double) total)/count

【翻译】MongoDB指南/聚合——聚合管道

[原文地址]https://docs.mongodb.com/manual/ 聚合 聚合操作处理数据记录并返回计算后的结果.聚合操作将多个文档分组,并能对已分组的数据执行一系列操作而返回单一结果.MongoDB提供了三种执行聚合的方式:聚合管道,map-reduce方法和单一目的聚合操作. 聚合管道 MongoDB的聚合框架模型建立在数据处理管道这一概念的基础之上.文档进入多阶段管道中,管道将文档转换为聚合结果.最基本的管道阶段类似于查询过滤器和修改输出文档形式的文档转换器. 其他的管道为分组和

MongoDB: 聚集管道

在MongoDB2.2新出现的. 聚集管道式基于数据处理管道概念建模的数据聚集框架.文档进入一个多阶段能将该文档转化为聚集结果的管道. 聚集管道提供了map-reduce方法了替代物,并在很多聚集任务中是首选的方案,因为map-reduce的复杂性可能是你不希望看到的. 上图是一个带注释的聚集管道的操作,有两个阶段:$match和$group 聚集管道在值的类型和结果大小上有很多限制.下面简单介绍, 聚集操作在使用aggregate命令时有的限制: 类型限制 聚集管道不是在下列类型的值上进行操作

<JAVA8新增内容>关于集合的操作(Collection/Iterator/Stream)

因为下文频繁使用lambda表达式,关于Java中的lambda表达式内容请见: http://www.cnblogs.com/guguli/p/4394676.html 一.使用增强的Iterator遍历集合元素 Iterator接口也是Java集合框架的成员,但它与Collection系列,Map系列的集合不一样:Collection系列集合,Map系列集合主要用于承装其他对象,而Iterator则主要用于遍历(即迭代访问)Collection集合中的元素,Iterator对象也被称为迭代器

【翻译】MongoDB指南/CRUD操作(二)

[原文地址]https://docs.mongodb.com/manual/ MongoDB CRUD操作(二) 主要内容: 更新文档,删除文档,批量写操作,SQL与MongoDB映射图,读隔离(读关注),写确认(写关注) 1 更新文档 1.1 更新 MongoDB提供下列方法用于更新一个集合 db.collection.updateOne() 更新使用指定过滤器匹配到的文档,即使过滤器匹配到多个文档,也只会更新一个文档. 3.2版本新增特性. db.collection.updateMany(

如何设置Windows域账户单一登陆VCSA6.0

背景描述: 当我们在部署VCSA时,VMware会提示你不要使用与AD相同的域名来创建SSO域,这样部署完成后不能使用域管理员账户实现单一登录,下面就来介绍如何实现使用Windows域中的账户实现单一登陆. 操作步骤: 1.首先确保域名被DNS正确解析 2.登陆Web版的Vcenter,打开Single sign-on的配置选项,推荐选择将ActiveDirectory作为Ldap服务器(结合背景描述我们知道SSO不建议和AD域名相同,所以第一项可能在后续的使用中会出现问题) 3.填写完信息后点

C++操作msxml的学习实例

最近工作上的需要,需要使用C++来与xml进行交互,在学习的过程中遇到了一些问题,从网上也搜索了一些资料,在这里总结一下,既是对初学的梳理,也能方便大家需要接触的人. 对xml的认识. xml是一种相对规范严整的解释语言.具体的语法大家可以去查,对我们使用的角度来说,我们只需要了解,他有很多节点(元素)组成,从父元素到其子元素,子元素可以为空,资源拥有属性,可以方便存储数据.以下是一个xml的示例文档:  <?xml version ="1.0" encoding="U