MongoDB学习3:聚合查询
1. 什么是MongoDB聚合框架
1.1 MongoDB聚合框架(Aggregation Frameworn)是一个计算框架,它可以:
● 作用在一个或几个集合上
● 对集合中的数据进行一系列运算
● 将这些数据转化为期望的形式
1.2 从效果而言,聚合框架相当于SQL查询中的:
● group by
● left outer join
● as 等
1.3 整个聚合运算过程称为管道(Pipeline),它是由多个步骤(Stage)组成的,每个管道:
● 接受一些列文档(原始数据)
● 每个步骤对这些文档进行一系列运算
● 结果文档输出给下一个步骤
2. 使用聚合框架
2.1 聚合运算的基本格式
pipeline = [$stage1,$stage2,...$stageN]
db.<集合>.aggregate(
pipeline,
{options}
)
2.2 常见步骤
| 步骤 | 作用 | SQL等价运算符 |
|---|---|---|
| $match | 过滤 | where |
| $project | 投影 | as |
| $sort | 排序 | order by |
| $group | 分组 | group by |
| $skip / $limit | 结果限制 | skip / limit |
| $lookup | 左外连接 | left outer join |
| $unwind | 展开数组 | N/A |
| $graphLookup | 图搜索 | N/A |
| $facet/$bucket | 分面搜索 | N/A |
2.2 常见步骤中的运算符
| $match | $project | $group |
|---|---|---|
|
● $eq、$gt、$gte、$lt、$lte ● $and、$or、$not、$in ● $geoWithin、$intersect ...... |
● 选择需要的或排除不需要的字段 ● $map、$reduce、$filter ● $range ● $multiply、$divide、$substract、$add ● $year、$month、$dayOfMonth、$hour、$minute、$second ...... |
● $esum、$avg ● $push、$addToSet ● $first、$last、$max、$min ...... |
3. 聚合运算的使用场景
3.1 聚合查询可用于OLAP和ALTP场景,例如:
| OLTP | OLAP |
|---|---|
|
● 计算 |
● 分析一段时间内的销售总额、均值 ● 计算一段时间内的净利润 ● 分析购买人的年龄分布 ● 分析学生成绩分布 ● 统计员工绩效 |
3.1 MQL常用步骤与SQL对比
| SQL | MQL |
|---|---|
|
|
|
|
| MQL特有 $unwind |
|
| MQL特有 $bucket |
|
| MQL特有 $facet |
|
MongoDB学习3:聚合查询的更多相关文章
- MongoDB学习笔记——聚合操作之MapReduce
MapReduce MongoDB中的MapReduce相当于关系数据库中的group by.使用MapReduce要实现两个函数Map和Reduce函数.Map函数调用emit(key,value) ...
- python操作mongodb之二聚合查询
#聚合查询 from pymongo import MongoClient db = MongoClient('mongodb://10.0.0.9:27017/').aggregation_exam ...
- MongoDB学习day06--高级查询aggregate聚合管道和nodejs操作aggregate
一.MongoDB聚合管道(Aggregation Pilpeline) 使用聚合管道可以对集合中的文档进行变换和组合. 主要功能:表的关联查询.数据统计 二.aggregate 管道操作符与表达式 ...
- MongoDB学习笔记——聚合操作之聚合管道(Aggregation Pipeline)
MongoDB聚合管道 使用聚合管道可以对集合中的文档进行变换和组合. 管道是由一个个功能节点组成的,这些节点用管道操作符来进行表示.聚合管道以一个集合中的所有文档作为开始,然后这些文档从一个操作节点 ...
- MongoDB学习笔记——聚合操作之group,distinct,count
单独的聚合命令(group,distinct,count) 单独聚合命令 比aggregate性能低,比Map-reduce灵活度低:但是可以节省几行javascript代码,后面那句话我自己加的,哈 ...
- MongoDB学习笔记六—查询下
查询内嵌文档 数据准备 > db.blog.find().pretty() { "_id" : ObjectId("585694e4c5b0525a48a441b5 ...
- MongoDB学习笔记五—查询上
数据准备 { , "goods_name" : "KD876", "createTime" : ISODate("2016-12- ...
- MongoDB学习 (六):查询
本文地址:http://www.cnblogs.com/egger/archive/2013/06/14/3135847.html 欢迎转载 ,请保留此链接๑•́ ₃•̀๑! 本文将介绍操作符的使用 ...
- [转载]MongoDB学习 (六):查询
本文地址:http://www.cnblogs.com/egger/archive/2013/06/14/3135847.html 欢迎转载 ,请保留此链接๑•́ ₃•̀๑! 本文将介绍操作符的使用 ...
- mongodb学习(二)分级查询数组中的值
(PS: 标题有点不妥当...) 大概是这样...数据结构如下: 需要模糊查询title的值... mongodb中操作语句: 主要是注意这里urlElements不需要加[0]...我开始的时候写成 ...
随机推荐
- Git、Github、Gitkraken 学习笔记
<Git.Github.Gitkraken 学习笔记> 一.写在前面 1.参考资料 本文参考 <Pro Git> 一书. 在官网有免费在线版可供阅读:https://git-s ...
- 微信小程序实战:app主页面保存page页面实例
先上代码. app.js //app.js App({ onLaunch: function () { // 登录 wx.login({ success: res => { if (this.g ...
- git的几个常用基本操作
需求一:如何把stage中的修改还原到work dir中 这个需求很常见,也很重要,比如我先将当前work dir中的修改添加到stage中,然后又对work dir中的文件进行了修改,但是又后悔了, ...
- 小特跨境电商ERP桌面版 1.不止包括进销存 还能算毛利
经过近几年跨境电商ERP的开发,加上对跨境电商行业的业务积累,开发出一套适合中小跨境电商公司使用的ERP软件.欢迎选购.支持目前流行的各大电商平台,如速卖通.敦煌网.亚马逊.Shopee.Wish等. ...
- centos7 安装 isign
centos应该自带python和openssl,这两个就不用装了, 先安装zip和git yum install -y unzip zip yum install git 然后克隆代码: https ...
- Flutter.. 两个点语法含义
在Flutter编程中,会经常用到".."的语法糖,如下 state.clone() ..splashImg = action.img ..famousSentence = act ...
- ThinkPHP6 核心分析之Http 类跟Request类的实例化
以下源码分析,我们可以从 App,Http 类的实例化过程,了解类是如何实现自动实例化的,依赖注入是怎么实现的. 从入口文件出发 当访问一个 ThinkPHP 搭建的站点,框架最先是从入口文件开始的, ...
- Python对列表去重的各种方法
一.循环去重 二.用 set() 去重 1.set()对list去重 2.list 是有序的,用 sort() 把顺序改回来 三.利用 dict 的属性来去重 1.用 dict 的 fromke ...
- vue学习(十四) 条件搜索框动态查询表中数据 数组的新方法
//html <div id="app"> <label> 名称搜索关键字: <input type="text" clasa=& ...
- 使用AB对Nginx压测和并发预估
简介 ab命令会创建多个并发访问线程,模拟多个访问者同时对某一URL地址进行访问.它的测试目标是基于URL的. # 1.ab每次只能测试一个URL,适合做重复压力测试 # 2.参数很多,可以支持添加c ...