前言

简单整理一下聚合操作。

正文

什么是聚合框架:

  1. 作用于一个或多个集合上

  2. 对集合的数据进行的一系列运算

  3. 将这些数据转换为期望的形式

从效果而言, 聚合框架相当于SQL 查询中的:

  1. Group By

  2. Left outer join

  3. as 等

整个聚合运算过程称为管道(pipeline), 它是由多个步骤组成的,每个管道:

  1. 接受一系列文档(原始数据)

  2. 每个步骤对这些文档进行一系列运算

  3. 结果文档输出给下一个步骤

步骤 作用 sql 等价运算符
$match 过滤 where
$project 投影 as
$sort 排序 ORDER BY
$group 分组 GROUP BY
$skip/$limit 结果限制 SKIP/LIMIT
$lookup 左外连接 LEFT OUTER JOIN

还有一些:$unwind 展开数组、$graphLookup 图搜索、$facet/ $bucket 分面搜索。

还有一些很常规的操作,比如说分页:

比如说查询分组:

数组展开:

区间分组:

多区域分组:

实操

  1. 总销售额

  1. 订单金额汇总

有些时候我们写mongo语句倒是好写,但是到了写代码的时候可能不是那么好写,那么可以使用mongo compass自动作为转换。

下一节,实操代码。

mongodb基础整理篇————聚合操作[三]的更多相关文章

  1. mongodb基础整理篇————常规操作[二]

    前言 简单整理一下常规操作. 正文 虽然一般说写代码看的是思想,但是呢,如果不知道mongodb 有哪些常用的操作,那么你怎么能知道mongodb是否符合你的需求,比如说如果聚合功能都没有,你得自己写 ...

  2. mongodb基础整理篇————副本概念篇[外篇]

    前言 副本集整理. 开始逐步把mongodb博客补齐了. 正文 什么是副本集 副本集是一组服务器,其中一个是用于处理写入操作的主节点,还有多个用于保存主节点的数据副本的从节点. 如果主节点崩溃了,则从 ...

  3. mongodb基础整理篇————简单介绍[一]

    前言 简单介绍一下文档数据库. 正文 mongodb 是一个以json为数据模型的文档数据库. 这里要介绍一下什么是json.因为有些人认为'{a:1,b:2}' 是json,而"this ...

  4. mongodb(五):聚合操作(python)

    pymongo的聚合操作 数据类型样式 /* 1 */ { "_id" : ObjectId("5e5a32fe2a89d7c2fc05b9fc"), &quo ...

  5. MongoDB 基础 -安全性-(权限操作)

    和其他所有数据库一样,权限的管理都差不多一样.mongodb存储所有的用户信息在admin 数据库的集合system.users中,保存用户名.密码和数据库信息.mongodb默认不启用授权认证,只要 ...

  6. 基础DOM和CSS操作(三)

    CSS方法 jQuery不但提供了CSS的核心操作方法,比如.css()..addClass()等.还封装了一些特殊功能的CSS操作方法,我们分别来了解一下. width()方法 方法名 描述 wid ...

  7. MongoDB基础一篇就够了

    MongoDB linux安装MongoDB Windows安装MongoDB 查看当前数据库名称 db 查看所有数据库名称 列出所有在物理上存在的数据库 show dbs 切换数据库 如果数据库不存 ...

  8. 《鸟哥的Linux私房菜-基础学习篇(第三版)》(六)

    第5章 首次登陆与在线求助man page        1. 首次登陆系统        首先谈了首次登陆CentOS 5.x界面.登陆选项中的会话是能够使用不同的图形界面来操作整个Linux系统. ...

  9. Django基础07篇 ORM操作

    1.新增(类似数据库操作的insert) # 新增 #方式一: models.Category.objects.create(name='MySQL') #方式二: c = models.Catego ...

  10. MongoDB基础入门002--基本操作,增删改查

    一.这里只是演示最基本的操作,更多的信息可以去官网.https://docs.mongodb.com/manual 打开一个cmd,输入mongo命令打开shell,其实这个shell就是mongod ...

随机推荐

  1. Java synchronized的使用与原理

    需要明确的几个问题: synchronized关键字可以作为函数的修饰符,也可作为函数内的语句,也就是平时说的同步方法和同步语句块.如果 再细的分类,synchronized可作用于instance变 ...

  2. python网络爬虫从入门到实战开发

    1.简单的抓取网页 from urllib import requestreq=request.Request("http://www.baidu.com")response=re ...

  3. XAF Blazor TabbedMdi

    开源项目地址:https://gitee.com/easyxaf/blazor-tabbed-mdi 前言 XAF在WinForm中采用了多文档界面(MDI),但在Blazor中却没有,在官网中也有人 ...

  4. 借助 Terraform 功能协调部署 CI/CD 流水线-Part 2

    在第一部分的文章中,我们介绍了3个步骤,完成了教程的基础配置: 使用 Terraform 创建 AWS EKS Infra 在 EKS 集群上部署 ArgoCD 及其依赖项 设置 Bitbucket ...

  5. 使用 Abp.Zero 搭建第三方登录模块(四):微信小程序开发

    ​简短回顾一下微信小程序端的流程: 用户通过扫码进入小程序的鉴权页面,更新状态到ACCESSED已扫码 用户点击确认授权,微信通过wx.login()接口获取第三方登录的必要信息:Code登录凭证. ...

  6. netcore 图片缩略图

    /// <summary> /// 取小写文件名后缀 /// </summary> /// <param name="name">文件名< ...

  7. Git修改最近一次提交的日志信息

    一.问题由来 当前自己所在的项目组中,每次发完一个版本后,就需要创建个人新版本的git提交凭证,其实就是系统自动 生成的一串编码,如果没有这个凭证,代码是提交不了的,这是公司制定的开发规范之一.这两天 ...

  8. CRC常用参数模型及C#代码实现

    目录 参数模型 算法实现 CRC-32 CRC-32/MPEG-2 表生成算法 参考资料 本文源码 参数模型 CRC即循环冗余校验码(Cyclic Redundancy Check):是数据通信领域中 ...

  9. Rabbit算法:轻量高效的加密利器

    Rabbit算法起源: Rabbit算法是由Martin Boesgaard和Mette Vesterager提出的一种流密码算法,其设计初衷是为了提供高性能和高度安全性的加密方案.Rabbit算法结 ...

  10. 记一次kafka无法生产发送消息排查经历

    参考,欢迎点击原文:https://stackoverflow.com/questions/37902167/kafka-error-while-fetching-metadata-with-corr ...