MongoDB中的聚合 aggregate

二十四、MongoDB 聚合运算( aggregate ) 阅读详情
  • 聚合(aggregate)主要用于计算数据,类似sql中的sum(),avg()。

    db.集合名称.aggregate({管道:{表达式}})
管道
  • 管道在Unix和Linux中一般用于将当前命令的输出结果作为下一个命令的输入
  • 在mongodb中,管道具有同样的作用,文档处理完毕后,通过管道进行下一次处理
  • 常用管道
    • $group:将集合中的文档分组,可用于统计结果
    • $match:过滤数据,只输出符合条件的文档
    • $project:修改输入文档的结构,如重命名、增加、删除字段、创建计算结果
    • $sort:将输入文档排序后输出
    • $limit:限制聚合管道返回的文档数
    • $skip:跳过指定数量的文档,并返回余下的文档
    • $unwind:将数组类型的字段进行拆分
表达式
  • 处理输入文档并输出

    表达式:'$列名'
  • 常用的表达式

    • $sum:计算总和
    • $avg:计算平均值
    • $min:获取最小值
    • $max:获取最大值
    • $push:在结果文档中插入值到一个数组中
    • $first:根据资源文档的排序获取第一个文档数据
    • $last:根据资源文档的排序获取最后一个文档数据
$group
  • 将集合中的文档分组,可用于统计结果

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

  • 例1:统计男生、女生的总人数

    db.stu.aggregate({
      $group:{
          _id:'$gender',
          con:{$sum:1}
          }
      })

    这里写图片描述

  • group by null:将集合中所有文档分为一组

  • 例2:求学生总数和平均年龄

    db.stu.aggregate(
      {$group:{
          _id:null,
          coun:{$sum:1},
          avgAge:{$avg:'$age'}
          }
      }
    )

    这里写图片描述

  • 透视数据

    // 统计学生性别以及学生的姓名
    db.stu.aggregate(
      {$group:{
          _id:'$gender',
          name:{$push:'$name'}
          }
      }
    )

    这里写图片描述

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

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

    这里写图片描述

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

  • 例子

    // 查询年龄大于20的男生、女生人数
    db.stu.aggregate(
      {$match:{age:{$gt:20}}},
      {$group:{_id:'$gender',con:{$sum:1}}}
    )

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

  • 例子

    // 查询男生、女生人数,输出人数
    db.stu.aggregate(
      {$group:{_id:'$gender',counter:{$sum:1}}},
      {$project:{_id:0,counter:1}}
    )

$sort
  • 将输入的文档排序之后输出

  • 例1:查询学生信息,按年龄升序

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

    ---------------07

  • 例2:查询男生、女生人数,按人数降序

    db.stu.aggregate(
      {$group:{_id:'$gender',coun:{$sum:1}}},
      {$sort:{coun:-1}}
    )

    -------08

$limit
  • 限制聚合管道返回的文档数

    // 查询两个学生的信息
    db.stu.aggregate(
      {$limit:2}
    )

    --------09

$skip
  • 跳过指定的数量的文档,并返回余下的文档

    // 查询第三条开始的学生的信息
    db.stu.aggregate(
      {$skip:2}
    )

    -------------10

  • $limit和$skip一起使用

    // 统计男生、女生人数,按人数升序,取第二条数据
    db.stu.aggregate(
      {$group:{_id:'$gender',coun:{$sum:1}}},
      {$sort:{coun:1}},
      {$skip:1},
      {$limit:1}
    )

    --------11

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

  • 语法1:

    • 对某字段值进行拆分
    db.集合名称.aggregate({$unwind:'$字段名称'})
    • 准备数据:
    db.t2.insert({_id:1,item:'t-shirt',size:['S','M','L']})
    • 查询
    db.t2.aggregate({$unwind:'$size'})

    -----------12

  • 语法2:

    • 对某字段值进行拆分
    • 处理空数组、非数组、无字段、null情况
    • 属性preserveNullAndEmptyArrays值为false表示丢弃属性值为空的文档
    • 属性preserveNullAndEmptyArrays值为true表示保留属性值为空的文档
    db.inventory.aggregate({
      $unwind:{
          path:'$字段名称',
          preserveNullAndEmptyArrays:<boolean> #防止数据丢失
      }
    })
    • 构造数据
    db.t3.insert([
    { "_id" : 1, "item" : "a", "size": [ "S", "M", "L"] },
    { "_id" : 2, "item" : "b", "size" : [ ] },
    { "_id" : 3, "item" : "c", "size": "M" },
    { "_id" : 4, "item" : "d" },
    { "_id" : 5, "item" : "e", "size" : null }
    ])

    ​

MongoDB之聚合aggregate操作 关于mongodb的高级操作,包括聚合、主从复制、分片、备份与恢复、MR。 一、聚合 aggregate 聚合(aggregate)主要用于计算数据,类似sql中的sum()、avg() 语法:     db.集合名称.aggregate([{管道:{表达式}}]) 管道:管道在Unix和Linux中一般用于将当前命令的输出结果作为下一个命令的输入,比如,ps ajx | grep mongo 在mongodb中,管道具有同样的作用,文档处理完毕后,通过管道进行下一次处理 常用管道 $group:将集合中的文档分组,可用于统计结果 $match:过滤数据,只输出符合条件的文档 $proj 立即下载

相关推荐

[ESP32]:基于esp-modbus实现serial主机

[ESP32]:基于esp-modbus实现serial主机

LINKKEEE的博客 2570

mongodb-aggregate(聚合函数)

mongodb是有自己的mapreduce的,功能很强大,性能也还好,完成了基本上所有的关系型数据库可以完成的统计工作;但是后来mongodb出现了聚合函数,尝试着代替mapreduce,下面开始介绍聚合函数的使用: aggregate() 方法MongoDB中聚合的方法使用aggregate()。 语法aggregate() 方法的基本语法格式如下所示: db.COLLECTION_NAM

qq_14950717的博客 3116

2024年捡垃圾指南:E5 V3/V4服务器CPU怎么选?从游戏多开到深度学习,附华南X99主板搭配清单

本文详细解析2024年E5 V3/V4服务器CPU的选购策略,涵盖游戏多开、深度学习等多种应用场景。通过对比E5 V3与V4系列的制程、功耗及性能差异,提供高性价比的CPU型号推荐及华南X99主板搭配方案,帮助用户在有限预算下打造高效能工作站。

weixin_42549451的博客 1591

Mongodb笔记八:聚合函数_mongo聚合函数

管道:管道一般用于将当前命令的输出结果作为下一个命令的输入,在mongodb中,管道具有同样的作用,文档处理完毕 后,通过管道进行下一次处理。_id : null, // ---->分组依据为不分组,聚合函数必须分组,如不需分组写null。$sort:{ “keyname”:1 | -1 } // 1表示升序, 0表示降序。$project:{ name:1 | 0 } // 1表示显示, 0表示不显示。

2401_89872732的博客 1323

[南大ICS-PA2] 字符串处理函数和printf实现

[南大ICS-PA2] 程序、运行时环境与AM 字符串处理函数和printf实现

qq_42474104的博客 2987

基于Python实现基于遥感指数的水体提取

基于Python实现基于遥感指数的水体提取

gis收藏家的博客 6149

mongodb的aggregate方法

mongo

weixin_50208491的博客 905

固定翼飞行器建模(二)——MATLAB/Simulink建模、配平及线性化

MATLAB/Simulink固定翼建模、配平及线性化。

2302_80148937的博客 1万+

MongoDB Aggregation(聚合)

聚合操作处理数据记录并返回计算结果。将来自多个文档的操作组值聚合在一起,并可以对分组的数据执行各种操作以返回单个结果。MongoDB提供了三种执行聚合的方法:聚合管道、map-reduce函数和单一用途的聚合方法。 一、聚合管道 聚合管道是基于数据处理管道概念建模的数据聚合框架。文档进入一个多阶段的管道,该管道将文档转换为聚合的结果。例如: 例子: db.orders.aggregate...

qq_33642970的博客 6234

Gemini 2.5 Pro国内免魔法直连教程:5分钟搞定专业级PPT图表(附折线图/柱状图案例)

本文详细介绍了如何利用Gemini 2.5 Pro快速生成专业级PPT图表,包括折线图和柱状图等常见商业图表。通过自然语言交互和智能图表生成功能,用户可以在5分钟内完成数据可视化,大幅提升工作效率。文章还提供了实战案例和高级技巧,帮助用户轻松应对各种商业场景需求。

weixin_30733003的博客 460

SolidWorks 小车底盘 装配体

通过制作小车底盘了解solidworks装配体的部分知识

及时总结 2229

MongoDB学习(五)mongodb终极查询-Aggregate

MongoDB学习(五)mongodb终极查询-Aggregate

weixin_44185213的博客 3815

5、模糊风险评估

本文介绍了基于模糊逻辑的风险评估方法,探讨了如何在不确定、不完整信息环境下进行高效的风险分析。文章涵盖了模糊集合与隶属度函数的基本概念、模糊推理系统的流程,并结合犯罪风险、金融风险和医疗诊断等实际案例,展示了模糊风险评估的应用价值和技术细节。此外,还介绍了模糊贝叶斯网络、模糊综合评价等进阶工具与方法,为多领域风险管理提供了理论支持和实践指导。

mango的博客 183

MongoDB 聚合aggregate

MongoDB 中聚合(aggregate)主要用于处理数据(诸如统计平均值,求和等),并返回计算后的数据结果。有点类似语句中的。

hie98894的博客 938

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

mongodb aggregate 聚合操作

何为aggregate聚合操作?mongodb的聚合操作,接受一个名为pipeline的参数,和一个可选参数。从字面意义上看,pipeline为流水线,一条流水线上可以有一个或多个工序。所以,通俗的讲,mongodb的一次聚合操作就是对一个collection进行多个工序的加工,其中的每个工序都可以修改、增加、删除文档,最终产出我们需要的产品。这个流水线,是完全in-memory的,也就是在内存中完

Mengxiang's Blog 4372

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

mongodb聚合操作aggregate

聚合操作分为两种 1.db.collection.aggregate() 阶段 描述 $addFields 向文档添加新字段。类似于 $project,$addFields重塑流中的每个文档; 具体而言,通过向输出文档添加新字段,该文档包含输入文档和新添加字段中的现有字段。 $bucket 根据指定的表达式和存储区边界,将传入的文档分组,...

lpfasd123的博客 1193

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

MongoDB 聚合操作 aggregate

MongoDB 聚合 aggregate 聚合操作就是把源数据集放到管道里加以处理得到统计后的结果 db.collectionName.aggregate([{ 管道 :{ 表达式 }}]) 常用管道: $group:给集合的文档分组,可用于统计结果,相当于GROUP BY $match:过滤数据,只输出符合条件的文档,相当于HAVING $project:选出来原始文档中的某些字段 $sort...

印第安米饭 765

MongoDB-聚合aggregate

MongoDB 聚合 MongoDB中聚合(aggregate)主要用于处理数据(诸如统计平均值,求和等),并返回计算后的数据结果。有点类似sql语句中的 count(*)。 aggregate() 方法 MongoDB中聚合的方法使用aggregate()。 语法 aggregate() 方法的基本语法格式如下所示: >db.COLLECTION_NAME.aggregate...

cxu123321的博客 270

MongoDB 聚合group、aggregate、Map Reduce

一:group   分组统计 语法: { key:&lt;&gt;,          #统计的字段 cound:{}         #筛选条件 reduce:function(current,result){}   #对文档进行聚合的函数 current(分组统计过程中的一个文档),result(聚合结果文档) initial:{}                       ...

luorufeng的专栏 607

MongoDB中的sort()排序方法、aggregate()聚合方法和索引

本文主要介绍MongoDB中的sort()排序方法、aggregate()聚合方法和索引。

一起学习 5683

mongodb 聚合java_Java中使用mongodb的aggregate聚合查询

首先,我们在数据库中,mongodb的聚合查询是这样写。db.getCollection('parking_record').aggregate({$match : {"appId" : "2e1800b22ae70600", "leaveTime" : {"$gt" : ISODate("2017-07-12T00:00:00"), "$lt" : ISODate("2017-07-13T00:...

weixin_32308039的博客 767

【MongoDB】聚合(aggregate)

MongoDB使用有一段时间了,前几天遇到一个统计需求,用到了聚合(aggregate)查询,要求在学员表中以班级分组,查询各个班级的学员数量。此篇文章借此应用场景重新梳理了下aggregate的使用方法。

a408492801的博客 873

mongo java aggregate_Java中使用mongodb的aggregate聚合查询

首先,我们在数据库中,mongodb的聚合查询是这样写。db.getCollection('parking_record').aggregate({$match : {"appId" : "2e1800b22ae70600", "leaveTime" : {"$gt" : ISODate("2017-07-12T00:00:00"), "$lt" : ISODate("2017-07-13T00:...

weixin_31434215的博客 789

Mongodb左连接-aggregate聚合函数查询

文章目录目标数据源数据相对于传统数据库写法mongodb-aggregate左连接写法 目标数据 源数据 表名:Address 相对于传统数据库写法 select ad._id as adId,ad.name,o.h,o.w from adress as ad left join order as o on o._id=ad.aId; mongodb-aggregate左连接写法 db.address.aggregate([ {$unwind:{

尽力漂亮的博客 1681

MongoDB的聚合函数 Aggregate

Aggregate的使用,有利于我们对MongoDB中的集合进行进一步的拆分。 示例: [java] view plaincopy "font-family:SimSun;">db.collection.aggregate(      {$match:{x:1},      {limit:10},      {$group:{_id:"$age"}}}  );  

自强不息 8455

mongo PHP aggregate,Mongodb中数据聚合之聚合管道aggregate

在之前的两篇文章 Mongodb中数据聚合之基本聚合函数count、distinct、group 和 Mongodb中数据聚合之MapReduce 中,我们已经对数据聚合提供了两种实现方式,今天,在这篇文章中,我们讲讲在Mongodb中的另外一种数据聚合实现方式——聚合管道aggregate。 面对在之前的两篇文章和中,我们已经对数据聚合提供了两种实现方式,今天,在这篇文章中,我们讲讲在Mongo...

weixin_29499829的博客 346
上一篇: MongoDB中的数据查询
下一篇: 利用Scrapy爬取职友集中企业的信息数据
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值