目录

MongoDB聚合操作

聚合操作的基本语法

常用的聚合操作

管道命令之$group

按照某个字段进行分组

详解

计算集合中某个字段的平均值

常用表达式

管道命令之$match

示例

管道命令之$sort

管道命令之$skip 和 $limit

管道命令之$project


MongoDB聚合操作

在MongoDB中,聚合操作是对文档进行数据处理和转换的强大工具。它允许你通过多个阶段的管道将多个操作链接在一起,以便对文档进行复杂的数据处理,主要用于处理多个文档(诸如统计平均值,求和等),并返回计算后的数据结果。

  • 对多个文档进行分组
  • 对分组的文档执行操作并返回单个结果
  • 分析数据变化

聚合操作的基本语法

db.collection.aggregate([pipeline])

db.collection是要进行聚合操作的集合,pipeline是一个由多个聚合阶段组成的数组。每个聚合阶段都代表一个数据处理操作,按照在数组中的顺序依次执行。

常用的聚合操作

  1. $match:过滤文档,只输出符合指定条件的文档。
  2. $project:选择需要输出的字段,并可以进行计算、重命名等操作。
  3. $group:将文档分组,并可以对分组进行聚合计算。
  4. $sort:对文档进行排序。
  5. $limit:限制输出结果的数量。
  6. $skip:跳过指定数量的文档。
  7. $unwind:展开数组字段,将每个数组元素拆分成独立的文档。
  8. $lookup:在不同的集合之间执行类似关联操作。

管道命令之$group

按照某个字段进行分组

db.stu.aggregate({$group:{_id:"$country",counter:{$sum:1}}}
)

详解

  • db.db_name.aggregate是语法,所有的管道命令都需要写在其中
  • _id 表示分组的依据,按照哪个字段进行分组,例如:需要使用$gender表示选择这个字段进行分组
  • $sum:1 表示把每条数据作为1进行统计,统计的是该分组下面数据的条数

计算集合中某个字段的平均值

db.sales.aggregate([{$group: {_id: null,avgAmount: { $avg: "$amount" }}}
])

$group阶段按照null分组(即所有文档都属于同一组),然后使用$avg操作符计算amount字段的平均值,并将结果输出为avgAmount字段。

常用表达式

表达式:处理输⼊⽂档并输出 语法:表达式:'$列名' 常⽤表达式:

  • $sum: 计算总和, $sum:1 表示以⼀倍计数
  • $avg: 计算平均值
  • $min: 获取最⼩值
  • $max: 获取最⼤值
  • $push: 在结果⽂档中插⼊值到⼀个数组中

管道命令之$match

$match用于进行数据的过滤,是在能够在聚合操作中使用的命令,和find区别在于$match 操作可以把结果交给下一个管道处理,而find不行。

示例

查询年龄大于20的人

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

查询年龄大于20的魏国的人数

db.person.aggregate([{$match:{age:{$gt:20}}},{$group:{_id:"$country",counter:{$sum:1}}}])

管道命令之$sort

$sort用于将输入的文档排序后输出

使用示例如下:

  1. 查询人物,按照年龄升序

    db.person.aggregate([{$sort:{age:1}}])
  2. 查询每个国家的人数,并排序

    db.person.aggregate([{$group:{_id:"$country",counter:{$sum:1}}},{$sort:{counter:-1}}
    ])
    

管道命令之$skip 和 $limit

  • $limit限制返回数据的条数
  • $skip 跳过指定的文档数,并返回剩下的文档数

注意

同时使用时先使用skip在使用limit

使用示例如下:

  1. 查询2条信息

    db.person.aggregate([{$limit:2}
    ])
    
  2. 查询从第三条开始的信息

    db.person.aggregate([{$skip:3}
    ])
    
  3. 查询每个国家的人数,按照人数升序,返回第二条数据

    db.person.aggregate([{$group:{_id:"$country",counter:{$sum:1}}},{$sort:{counter:-1}},{$skip:1},{$limit:1}
    ])
    

管道命令之$project

$project用于修改文档的输入输出结构

字段值:0不显示,1显示

使用示例如下:

  1. 查询人物的姓名、年龄,不显示ID

db.person.aggregate([{$project:{_id:0,name:1,age:1}}])
  1. 查询每个国家的人数,只显示数量

db.person.aggregate([{$group:{_id:"$country",counter:{$sum:1}}},{$project:{_id:0,counter:1}}])

注意

  • _id与其他字段共同设置时,0只能设置在_id
  • 设置字段时,除了_id字段,其他默认取反

Scrapy框架之MongoDB聚合操作相关推荐

  1. MongoDB 聚合操作

    MongoDB 聚合操作 在MongoDB中,有两种方式计算聚合:Pipeline 和 MapReduce.Pipeline查询速度快于MapReduce,但是MapReduce的强大之处在于能够在多 ...

  2. mongoDB聚合操作_aggregate()归纳

    mongoDB聚合操作 文章目录 1.准备一组数据 2.$group 分组管道 2.1 统计单组 2.2 统计多组 3.$match 过滤管道 拓展 统计数据个数 4.$project 映射管道 5. ...

  3. Python|并发编程|爬虫|单线程|多线程|异步I/O|360图片|Selenium及JavaScript|Scrapy框架|BOM 和 DOM 操作简介|语言基础50课:学习(12)

    文章目录 系列目录 原项目地址 第37课:并发编程在爬虫中的应用 单线程版本 多线程版本 异步I/O版本 总结 第38课:抓取网页动态内容 Selenium 介绍 使用Selenium 加载页面 查找 ...

  4. mongodb聚合操作之group

    group介绍 mongodb中提供了一个很实用的聚合函数group,这个有点类似于mysql的group by 的功能,但又不是mysql中group by 的功能,它更多是用来做数据的聚合操作使用 ...

  5. scrapy框架连接MongoDB数据库

    目录 1.下载pymongo模块 2.编码实现数据库简单操作 (1)链接数据库 (2)创建数据库 (3)创建表 (4)插入数据 3.打开Robo 3T ,查看数据 1.下载pymongo模块 pip ...

  6. MongoDB——聚合操作

    一.聚合操作 1.1.聚合操作的概述 聚合操作处理数据记录并返回计算结果(诸如统计平均值,求和等). 聚合操作组值来自多个文档,可以对分组数据执行各种操作以返回单个结果. 聚合操作包含三类:单一作用聚 ...

  7. Spring Boot 整合——MongoDB整合3(MongoDB聚合操作)

    文章前面 关于版本 依赖 版本 springboot 2.0.8.RELEASE mongodb 4.0.14 本内容只是为了介绍mongodb最基础的使用以及配置,作为一个知名的数据库,其存在相当多 ...

  8. MongoDB——聚合操作详解

    聚合(Aggregation)为集合文档数据提供各种处理数据方法,并返回计算结果. MongoDB提供了3种方式来执行聚合命令: 聚合管道方法 map-reduce方法 单一目标聚合方法 1. 聚合管 ...

  9. 爬虫-豆瓣书籍排行榜及用户信息-2021.7.23-使用Scrapy框架-用MongoDB存储数据

    1.环境 python3.8或python3.7 pycharm2021.2 MongoDB Scrapy 2.信息提取 2.1 创建Scrapy项目 在cmd模式下创建Scrapy项目 # 进入要存 ...

最新文章

  1. 看看人家那后端API接口写得,那叫一个优雅!
  2. Laravel 5.5 使用 Passport 实现 Auth 认证
  3. 用树莓派的方式打开《Bad Apple!!》原来是这样子的
  4. centos磁盘空间满查询和移动命令小记
  5. 通过扩展RandomAccessFile类使之具备Buffer改善I/O性能--转载
  6. SSH连接服务器报错(WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED)的解决方案
  7. jQuery 的 ajax
  8. a - 数据结构实验之串一:kmp简单应用_Java程序员必会之数据结构与算法全梳理
  9. ScrollMagic-jQuery元素滚动动画库插件
  10. Docker之数据卷和数据卷容器
  11. 一分钟了解阿里云产品:专有网络VPC五大热点技术问题分析
  12. MATLABnbsp;std()nbsp;标准偏差函数
  13. ps放大图片后变模糊怎么办,如何变清晰?
  14. mySQL mainxml汉化包下载
  15. JavaScript---文件下载处理文件下载失败兼容IE11文件下载
  16. type-c边玩边充电游戏手柄方案
  17. odoo11 odoo.addons.base.ir.ir_model: Access Denied by ACLs for operation: read, uid: 4,
  18. 投资理财学习笔记二,1.4做个有钱人之富人思维
  19. 荟研新材料 毕克BYK024 毕克BYK028 有机硅消泡剂 丙烯酸酯 聚氨酯 水性印刷油墨 罩光清漆 水性UV体系消泡剂
  20. 办公软件——隐私条款

热门文章

  1. android 魅族4怎么升级包,魅族MX4怎么升级flyme 魅族MX4升级flyme详细教程
  2. 视频滤镜软件哪个好?推荐几个视频滤镜软件给你
  3. 提取论文中公式神奇(写论文的福音)
  4. dedecms教程:后台验证码不显示解决方法
  5. 选购蓝牙耳机不想踩雷看这里!2021五款高性能蓝牙耳机推荐
  6. Python数据清洗分列函数,解决多字段数据分列的串行问题
  7. Pwn2Own 2022多伦多大赛Master of Pwn 诞生
  8. 国内外有哪些自然语言处理的团队?
  9. ApacheDoris入门操作和BE启动失败问题解决
  10. java算法思绪_疆场景算法(Java实现)