MongoDB(七):聚合aggregate

1. 聚合aggregate

聚合主要用于计算数据,类似sql中的sum()、avg()

语法:

db.集合名称.aggregate([{管道:{表达式}}])

stu准备的数据:

1.1 管道

管道在Unix和Linux中一般用于将当前命令的输出结果作为下一个命令的输入。

ps ajx | grep mongo

在mongodb中,管道具有同样的作用,文档处理完毕后,通过管道进行下一次处理。

常用管道:

$group:将集合中的文档分组,可用于统计结果。

$match:用于过滤数据,只输出符合条件的文档。$match使用MongoDB的标准查询操作。

$project:修改输入文档的结构。可以用来重命名、增加或删除域,也可以用于创建计算结果以及嵌套文档。

$sort:将输入文档排序后输出。

$limit:用来限制MongoDB聚合管道返回的文档数。

$skip:在聚合管道中跳过指定数量的文档,并返回余下的文档。

$unwind:将文档中的某一个数组类型字段拆分成多条,每条包含数组中的一个值。

$geoNear:输出接近某一地理位置的有序文档。

1.2 表达式

处理输入文档并输出。

语法:

表达式:‘$列名‘

常用表达式:

$sum:计算总和,$sum:同count表示计数

$avg:计算平均值

$min:获取最小值

$max:获取最大值

$push:在结果文档中插入一个数组中,数组内容为选中字段

$first:根据资源文档的排序获取第一个文档数据

$last:根据资源文档的排序获取最后一个文档数据

1.3 $group

将集合中的文档分组,可用于统计结果。

_id表示分组的依据,使用某个字段的格式为‘$字段’

实例:

统计男生、女生的总人数:

db.stu.aggregate([
{$group:{_id:‘gender‘,counter:{$sum:1}}}
])

统计学生性别及学生姓名:

db.stu.aggregate([
{$group:{_id:‘gender‘,counter:{$push:‘$name‘}}}
])

使用$$ROOT可以将文档内容加入到结果集的数组中:

db.stu.aggregate([
{$group:{_id:‘gender‘,name:{$push:‘$$ROOT‘}}}
])

将集合中所有文档分为一组。

求学生总人数、平均年龄:

db.stu.aggregate([
{$group:{_id:null,counter:{$sum:1},avgAge:{$avg:‘$age‘}}}
])

1.4 $match

用于过滤数据,只输出符合条件的文档。

使用MongoDB的标准查询操作。

实例:

查询年龄大于20的学生:

db.stu.aggregate([
{$match:{age:{$gt:20}}}
])

查询年龄大于20的男生、女生人数。

db.stu.aggregate([
{$match:{age:{$gt:20}}},
{$group:{_id:‘$gender‘,counter:{$sum:1}}}
])

1.5 $project

修改输入文档的结构,如重命名、增加、删除字段、创建计算结果。

实例:

查询学生的姓名、年龄。

db.stu.aggregate([
{$project:{_id:0,name:1,age:1}}
])

查询男生、女生人数,输出人数。

db.stu.aggregate([
{$group:{_id:‘$gender‘,counter:{$sum:1}}},
{$project:{_id:0,counter:1}}
])

1.6 $sort

将输入文档排序后输出。

实例:

查询学生学习,按年龄升序。

db.stu.aggregate([
{$sort:{age:1}}
])

查询男生、女生人数,按人数降序。

db.stu.aggregate([
{$group:{_id:‘$gender‘,counter:{$sum:1}}},
{$sort:{counter:-1}}
])

1.7 $limit

限制聚合管道返回的文档数。

查询2条学生信息。

db.stu.aggregate([
{$limit:2}
])

1.8 $skip

跳过指定数量的文档,并返回余下的文档。

查询从第3条开始的学生信息。

db.stu.aggregate([
{$skip:2}
])

统计男生、女生人数,按人数升序,取第二条数据。

db.stu.aggregate([
{$group:{_id:‘$gender‘,counter:{$sum:1}}},
{$sort:{counter:1}},
{$skip:1},
{$limit:1}
])

注意顺序:先写skip,再写limit。

原文地址:https://www.cnblogs.com/liuhui0308/p/12070619.html

时间: 2024-10-09 08:19:33

MongoDB(七):聚合aggregate的相关文章

Mongodb的聚合和管道

MongoDB 聚合 MongoDB中聚合(aggregate)主要用于处理数据(诸如统计平均值,求和等),并返回计算后的数据结果. aggregate() 方法 MongoDB中聚合的方法使用aggregate(). 语法 aggregate() 方法的基本语法格式如下所示: >db.COLLECTION_NAME.aggregate(AGGREGATE_OPERATION) 注:参数AGGREGATE_OPERATION可以是一个对象(单个处理),也可以是多个对象的数组(管道处理). >

MongoDB的使用学习之(七)MongoDB的聚合查询(两种方式)附项目源码

先来张在路上-- 此项目是用Maven创建的,没有使用Maven的,自己百度.谷歌去:直接用Junit测试就行,先执行里面的save方法,添加10000条测试数据提供各种聚合查询等. 废话不多说,上干货-- 一.MongoDB数据库的配置(mongodb.xml) 以下是我自己的配置,红色字体请改为自己本机的东东,你说不懂设置端口,不会创建数据库名称,不会配置用户名密码,那有请查阅本系列的第4节(MongoDB的使用学习之(四)权限设置--用户名.密码.端口==),你说懒得设置,那就@#¥%--

聚合aggregate

聚合 aggregate-小结 目录:一.聚合的概念:类似sql的sum.avg二.$group:分组统计.将集合中的文档分组,可用于统计结果三.$match:编排显示字段.用于过滤数据,只输出符合条件的文档四.$project:修改输入文档的结构,如重命名.增加.删除字段.创建计算结果五.$sort:将输入文档排序后输出六.$limit和$skip:取得.跳过给定数量的文档七.$unwind:拆分列表.将文档中的某一个数组类型字段拆分成多条,每条包含数组中的一个值 ==============

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

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

MongoDB,分组,聚合

使用聚合,db.集合名.aggregate- 而不是find 管道在Unix和Linux中一般用于将当前命令的输出结果作为下一个命令的参数.MongoDB的聚合管道将MongoDB文档在一个管道处理完毕后将结果传递给下一个管道处理.管道操作是可以重复的. 每一个操作符(集合)都会接受一连串的文档,对这些文档做一些类型转换,最后将转换后的文档作为结果传递给下一个操作符,对于最后一个操作符,是将结果返回给客户端 //分组(这里制定了分组字段 $+字段名)//这里可以理解为,吧lastModifyBy

mongodb 分组聚合查询

MongoDB,分组,聚合 使用聚合,db.集合名.aggregate- 而不是find 管道在Unix和Linux中一般用于将当前命令的输出结果作为下一个命令的参数.MongoDB的聚合管道将MongoDB文档在一个管道处理完毕后将结果传递给下一个管道处理.管道操作是可以重复的. 每一个操作符(集合)都会接受一连串的文档,对这些文档做一些类型转换,最后将转换后的文档作为结果传递给下一个操作符,对于最后一个操作符,是将结果返回给客户端 //分组(这里制定了分组字段 $+字段名)//这里可以理解为

mongodb高级聚合查询

在工作中会经常遇到一些mongodb的聚合操作,特此总结下.mongo存储的可以是复杂类型,比如数组.对象等mysql不善于处理的文档型结构,并且聚合的操作也比mysql复杂很多. 注:本文基于 mongodb v3.6 目录 mongo与mysql聚合类比 aggregate简介 aggregate语法 aggregate常用pipeline stage介绍(本文核心) mongo与mysql聚合类比 为了便于理解,先将常见的mongo的聚合操作和mysql的查询做下类比: SQL 操作/函数

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

题记: 还有3天2014年结束了,这个月的计划除了总结Mongodb外其他计划都已经完成了.最近由于懒惰对于mongodb的研究暂停了好长时间.在最后的三天里,对于mongodb的研究做以总结和梳理: 一.基本概念 对于聚合框架,我在官方文档(http://docs.mongodb.org/manual/core/aggregation-introduction/)找到对它的介绍.翻译大概意思如下: 聚合是处理数据记录并且返回计算结果的操作.mongodb提供了一组强大针对数据集合进行检查和计算

MongoDB中聚合工具Aggregate等的介绍与使用

Aggregate是MongoDB提供的众多工具中的比较重要的一个,类似于SQL语句中的GROUP BY.聚合工具可以让开发人员直接使用MongoDB原生的命令操作数据库中的数据,并且按照要求进行聚合. MongoDB提供了三种执行聚合的方法:Aggregation Pipleline,map-reduce功能和 Single Purpose Aggregation Operations 其中用来做聚合操作的几个函数是 aggregate(pipeline,options) 指定 group 的