MongoDB aggregate聚合

本文涉及的产品
云数据库 MongoDB,通用型 2核4GB
简介:

aggregate相当于 相当于mysql中的group以及一系列的操作

官网介绍地址:http://docs.mongodb.org/manual/reference/sql-aggregation-comparison/


表达式 描述 实例
$sum 总结从集合中的所有文件所定义的值. db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$sum : "$likes"}}}])
$avg 从所有文档集合中所有给定值计算的平均. db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$avg : "$likes"}}}])
$min 获取集合中的所有文件中的相应值最小. db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$min : "$likes"}}}])
$max 获取集合中的所有文件中的相应值的最大 db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$max : "$likes"}}}])
$push 值插入到一个数组生成文档中. db.mycol.aggregate([{$group : {_id : "$by_user", url : {$push: "$url"}}}])
$addToSet 值插入到一个数组中所得到的文档,但不会创建重复. db.mycol.aggregate([{$group : {_id : "$by_user", url : {$addToSet : "$url"}}}])
$first 根据分组从源文档中获取的第一个文档。通常情况下,这才有意义,连同以前的一些应用 “$sort”-stage. db.mycol.aggregate([{$group : {_id : "$by_user", first_url : {$first : "$url"}}}])
$last 根据分组从源文档中获取最后的文档。通常,这才有意义,连同以前的一些应用 “$sort”-stage. db.mycol.aggregate([{$group : {_id : "$by_user", last_url : {$last : "$url"}}}])



相关operators如下:


  • $project: 用于选择从收集的一些具体字段。(别名,显示或者不显示)

  • $match: 这是一个滤波操作,因此可以减少量,作为下一阶段的输入给定的文档。(查询条件)

  • $group: 如上所讨论的,这不实际的聚合。 (需要进行分组的字段,sum等也在这里进行)

  • $sort: 文件排序。(排序)

  • $skip: 与此有可能向前跳过的文件列表中的一个给定的的文档数量。(用于分页)

  • $limit: 这限制了的文档数量看一下由从当前位置开始的给定数(用于分页)

  • $unwind: 这是用来平仓文档的中使用数组。使用数组时,数据是一种pre-joinded,再次有个别文件,此操作将被取消。因此,这个阶段,数量会增加文件的下一阶段。(这个很少使用)




对应java中的操作如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
BasicDBObject fields =  new  BasicDBObject( "email" 1 );
           DBObject project =  new  BasicDBObject( "$project" , fields );
           
           
           BasicDBObject groupFilters =  new  BasicDBObject( "_id" "$name" );
           groupFilters.put( "sumage" new  BasicDBObject( "$sum" "$age" ));
           groupFilters.put( "totalage" new  BasicDBObject( "$avg" "$age" ));
           BasicDBObject group =  new  BasicDBObject( "$group" , groupFilters);
           
           AggregationOutput aggrresult =  this .mongoTemplate.getCollection( "test" ).aggregate(matchOpt,project, group);    //如果还有sort,skip等则继续在后面追加
           
           
           //或者可以将所有的operate加入list中,如下
           List list =  new  ArrayList();
           list.add(group);
           list.add(project );
           AggregationOutput aggrresult =  this .mongoTemplate.getCollection( "test" ).aggregate(list);     //如此同样可以
        






      本文转自布拉君君 51CTO博客,原文链接:http://blog.51cto.com/5148737/1638101,如需转载请自行联系原作者



相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。   相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
相关文章
|
8月前
|
SQL NoSQL 关系型数据库
MongoDB复杂分组聚合查询1
MongoDB复杂分组聚合查询1
421 0
|
3天前
|
NoSQL 数据挖掘 数据处理
【MongoDB 专栏】MongoDB 聚合管道:数据分析利器
【5月更文挑战第10天】MongoDB的聚合管道是数据分析利器,它通过一系列阶段(如\$match、\$group、\$project等)处理和转换数据,实现过滤、分组、统计等功能。适用于复杂的数据分析任务,能高效处理大量数据并提供实时洞察。在电商、日志和金融等领域有广泛应用。注意索引优化和避免过度聚合,以确保准确性和效率。借助聚合管道,我们可以深入挖掘数据价值,驱动业务发展。
【MongoDB 专栏】MongoDB 聚合管道:数据分析利器
|
13天前
|
NoSQL 大数据 数据处理
MongoDB聚合框架与复杂查询优化:技术深度解析
【4月更文挑战第30天】本文深入探讨了MongoDB的聚合框架和复杂查询优化技术。聚合框架包含$match、$group、$sort和$project阶段,用于数据处理和分析,提供灵活性和高性能。优化查询涉及创建合适索引、使用聚合框架、简化查询语句、限制返回结果数、避免跨分片查询、只查询所需字段及使用$inc操作符。理解这些技术有助于提升MongoDB在大数据和复杂查询场景下的性能。
|
1月前
|
JSON NoSQL MongoDB
mongodb导出聚合查询的数据
mongodb导出聚合查询的数据
|
1月前
|
NoSQL 数据挖掘 BI
【MongoDB】MongoDB 聚合框架
【4月更文挑战第3天】【MongoDB】MongoDB 聚合框架
|
4月前
|
存储 NoSQL MongoDB
MongoDB之索引和聚合
【1月更文挑战第21天】 一、索引 1、说明 2、原理 3、相关操作 3.1、创建索引 3.2、查看集合索引 3.3、查看集合索引大小 3.4、删除集合所有索引(不包含_id索引) 3.5、删除集合指定索引 4、复合索引 二、聚合 1、说明 2、使用
69 0
|
6月前
|
SQL NoSQL Unix
13 MongoDB高级 - 聚合 aggregate
13 MongoDB高级 - 聚合 aggregate
38 0
|
8月前
|
分布式计算 JavaScript 前端开发
MongoDB复杂分组聚合查询3
MongoDB复杂分组聚合查询3
96 0
|
8月前
|
SQL NoSQL 关系型数据库
MongoDB复杂分组聚合查询2
MongoDB复杂分组聚合查询2
86 0
|
9月前
MongoDB-聚合操作$project
什么是聚合操作 • 聚合操作就是通过一个方法完成一系列的操作 • 在聚合操作中, 每一个操作我们称之为一个阶段 • 聚合操作会将上一个阶段处理结果传给下一个阶段继续处理 • 所有阶段都处理完毕会返回一个新的结果集给我们
135 0