mongodb聚合操作
1. mongodb的聚合是什么
2. mongodb的常用管道和表达式
2.1 常用管道命令
- $group: 将集合中的⽂档分组, 可⽤于统计结果
- $match: 过滤数据, 只输出符合条件的⽂档
- $project: 修改输⼊⽂档的结构, 如重命名、 增加、 删除字段、 创建计算结果
- $sort: 将输⼊⽂档排序后输出
- $limit: 限制聚合管道返回的⽂档数
- $skip: 跳过指定数量的⽂档, 并返回余下的⽂档
2.2 常用表达式
- $sum: 计算总和, $sum:1 表示以⼀倍计数
- $avg: 计算平均值
- $min: 获取最⼩值
- $max: 获取最⼤值
- $push: 在结果⽂档中插⼊值到⼀个数组中
3. 管道命令之$group
3.1 按照某个字段进行分组
- db.db_name.aggregate是语法,所有的管道命令都需要写在其中
- _id 表示分组的依据,按照哪个字段进行分组,需要使用$gender表示选择这个字段进行分组
- $sum:1 表示把每条数据作为1进行统计,统计的是该分组下面数据的条数
3.2 group by null
- _id:null 表示不指定分组的字段,即统计整个文档,此时获取的counter表示整个文档的个数
3.3 数据透视
- 统计不同性别的学生db.stu.aggregate({$group:{_id:null,name:{$push:"$name"}}})
- 使用$$ROOT可以将整个文档放入数组中db.stu.aggregate({$group:{_id:null,name:{$push:"$$ROOT"}}})
4.管道命令之$match
- 查询年龄大于20的学生db.stu.aggregate({$match:{age:{$gt:20}})
- 查询年龄大于20的男女学生的人数db.stu.aggregate({$match:{age:{$gt:20}}{$group:{_id:"$gender",counter:{$sum: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}})
6. 管道命令之$sort
- 查询学生信息,按照年龄升序db.stu.aggregate({$sort:{age:1}})
- 查询男女人数,按照人数降序db.stu.aggregate({$group:{_id:"$gender",counter:{$sum:1}}},{$sort:{counter:-1}})
7. 管道命令之$skip 和 $limit
- $limit限制返回数据的条数
- $skip 跳过指定的文档数,并返回剩下的文档数
- 同时使用时先使用skip在使用limit
- 查询2条学生信息db.stu.aggregate({$limit:2})
- 查询从第三条开始的学生信息db.stu.aggregate({$skip:3})
- 统计男女生人数,按照人数升序,返回第二条数据db.stu.aggregate({$group:{_id:"$gender",counter:{$sum:1}}},{$sort:{counter:-1}},{$skip:1},{$limit:1})
mongodb聚合操作的更多相关文章
- MongoDB 聚合操作
在MongoDB中,有两种方式计算聚合:Pipeline 和 MapReduce.Pipeline查询速度快于MapReduce,但是MapReduce的强大之处在于能够在多台Server上并行执行复 ...
- MongoDB 聚合操作(转)
在MongoDB中,有两种方式计算聚合:Pipeline 和 MapReduce.Pipeline查询速度快于MapReduce,但是MapReduce的强大之处在于能够在多台Server上并行执行复 ...
- mongodb聚合查询-aggregate
Mongodb-aggregate 在工作中经常遇到一些mongodb的聚合操作,和mysql对比起来,mongo存储的可以是复杂的类型,比如数组,字典等mysql不善于处理的文档型结构,但是mong ...
- MongoDB学习笔记——聚合操作之聚合管道(Aggregation Pipeline)
MongoDB聚合管道 使用聚合管道可以对集合中的文档进行变换和组合. 管道是由一个个功能节点组成的,这些节点用管道操作符来进行表示.聚合管道以一个集合中的所有文档作为开始,然后这些文档从一个操作节点 ...
- MongoDB 基本操作和聚合操作
一 . MongoDB 基本操作 基本操作可以简单分为查询.插入.更新.删除. 1 文档查询 作用 MySQL SQL MongoDB 所有记录 SELECT * FROM users; db ...
- Yii2的mongodb的聚合操作
最近项目使用到mongodb的聚合操作,但是yii文档中对这方面资料较少,记录下 $where['created_time'] = ['$gt' => "$start_date_str ...
- MongoDB中的聚合操作
根据MongoDB的文档描述,在MongoDB的聚合操作中,有以下五个聚合命令. 其中,count.distinct和group会提供很基本的功能,至于其他的高级聚合功能(sum.average.ma ...
- MongoDB的聚合操作以及与Python的交互
上一篇主要介绍了MongoDB的基本操作,包括创建.插入.保存.更新和查询等,链接为MongoDB基本操作. 在本文中主要介绍MongoDB的聚合以及与Python的交互. MongoDB聚合 什么是 ...
- MongoDB入门---聚合操作&管道操作符&索引的使用
经过前段时间的学习呢,我们对MongoDB有了一个大概的了解,接下来就要开始使用稍稍深入一点的东西了,首先呢,就是MongoDB中的聚合函数,跟mysql中的count等函数差不多.话不多说哈,我们先 ...
随机推荐
- v8:: fatalProcessOutOfMemory
express项目,用于画图读写图片数据, pm2 作为进城守护. 生产环节报警:v8:: fatalProcessOutOfMemory,xxxx等,一时不知道什么原因. linux系统下使用如下命 ...
- hadoop常见问题
Q1.什么是 Hadoop? Hadoop 是一个开源软件框架,用于存储大量数据,并发处理/查询在具有多个商用硬件(即低成本硬件)节点的集群上的那些数据.总之,Hadoop 包括以下内容: HDFS( ...
- Linux中文乱码 - - 更改Linux字符集
查看当前系统默认采用的字符集: # locale 在RedHat/CentOS系统下,记录系统默认使用语言的文件是/etc/sysconfig/i18n,如果默认安装的是中文的系统,i18n的内容如 ...
- myhabits where in foreach
myhabits传入参数:类,其中类中包含字符串数组String[] 当查询where in String[]时 <select id="selectData" parame ...
- Scrapy爬取猫眼《复仇者联盟4终局之战》影评
一.分析 首先简单介绍一下Scrapy的基本流程: 引擎从调度器中取出一个链接(URL)用于接下来的抓取 引擎把URL封装成一个请求(Request)传给下载器 下载器把资源下载下来,并封装成应答包( ...
- 理解StringBuilder
StringBuilder objects are like String objects, except that they can be modified. Internally, these o ...
- 用C语言编写一个简单的词法分析程序
问题描述: 用C或C++语言编写一个简单的词法分析程序,扫描C语言小子集的源程序,根据给定的词法规则,识别单词,填写相应的表.如果产生词法错误,则显示错误信息.位置,并试图从错误中恢复.简单的恢复方法 ...
- Kubernetes helm配置国内镜像源
1.删除默认的源 helm repo remove stable 2.增加新的国内镜像源 helm repo add stable https://burdenbear.github.io/kube- ...
- debian9使用国内源安装docker以及一些使用方法
debian9使用国内源安装docker以及一些使用方法 首先, 我的环境是debian, 容器是centos debian 扔源 # deb-src [arch=amd64] https://m ...
- 当Vue中img的src是动态渲染时不显示问题
最近遇见动态渲染img时,想起了当初刚开始写vue时,曾经遇见的一个小小坑. Vue中:img的src属性是动态渲染时不显示问题1.需求:展示用户头像,数据从后台获取,如果没有拿到则显示默认图片. 如 ...