首页 > 数据库 >MongoDB聚合操作之分组、过滤

MongoDB聚合操作之分组、过滤

时间:2023-06-28 23:58:45浏览次数:57  
标签:聚合 MongoDB sum db 过滤 分组 aggregate match

聚合操作之分组、过滤

image-20220728011253371

MongoDB 中聚合(aggregate)主要用于处理多个文档(诸如统计平均值,求和等),并返回计算后的数据结果。

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

语法:db.集合名称.aggregate([{管道:{表达式}}])

image-20210705172345672

管道命令之$group

按照某个字段进行分组

$group是所有聚合命令中用的最多的一个命令,用来将集合中的文档分组,可用于统计结果

使用示例如下

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

其中注意点:

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

常用表达式

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

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

管道命令之$match

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

使用示例如下:

  1. 查询年龄大于20的人

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

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

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

     

标签:聚合,MongoDB,sum,db,过滤,分组,aggregate,match
From: https://www.cnblogs.com/jiangjiayun/p/17512859.html

相关文章

  • MongoDB删除文档
    删除文档编写语法为db.集合名.函数名()函数名含义remove( <query>)参数query:匹配符合的删除条件数据deleteOne( <query>)更新一条数据deleteMany( <query>)更新多条数据样例删除集合所有文档db.集合名.deleteMany({})删除指定条件的文档db.集......
  • 布隆过滤器
    一、作用布隆过滤器(BloomFilter)可以用于检索一个元素是否存在于一个集合中。二、底层数据结构bitmap(位图):相当于是一个以bit位为单位的数组,数组中每个单元只能存储二进制数0或1。存储数据:通过多个hash函数,根据hash计算数组对应的位置改为1。查询数据:使用相同hash函数获取到多......
  • MongoDB数据的更新
    数据的更新编写语法为db.集合名.函数名()函数名含义update( <query>, <update> ,{multi:<boolean>})参数query:查询条件,类似sql语句update中where部分参数update:更新操作符,类似sql语句update中set部分参数multi:可选,默认是false,表示只更新找到的第一条记录,值为tr......
  • MongoDB数据的增加
    数据的增加MongoDB将文档存储在集合中。集合类似于关系数据库中的表。如果集合不存在,MongoDB会在首次存储该集合的数据时创建该集合。编写语法为db.集合名.函数名()函数名含义save()保存文档。文档不存在时,新创建一个文档;文档存在,更新文档insert()插入......
  • wireshark 过滤器 过滤规则
    wireshark过滤器wireshark有两种过滤器,一种是抓包过滤器,一种是显示过滤器,注意两种过滤器的过滤规则不一样。抓包过滤器定义得当,就可以抓少量的包而达到目的,抓的包太多,wireshark会卡顿。抓包过滤器抓包过滤器,顾名思义是用来抓包的,抓包过滤器抓取数据包,显示过滤器过滤前者抓取的数......
  • 布谷鸟过滤器核心代码
    privatebooleanwriteBits(longcurIndex,longtag,BooleanbitValue){CommandBatchServiceexecutorService=newCommandBatchService(commandExecutor);RBitSetAsyncbs=redisUtils.createBitSet(executorService);//判断curIndex出是否已有......
  • MongoDB基础命令
    MongoDB基础命令计算机存储数据的概念如下:查看数据库列出所有在物理上存在的数showdbs;切换数据库/创建数据库如果数据库不存在,则指向数据库,但不创建,直到插入数据或创建集合时数据库才被创建use数据库名;删除当前数据库删除当前指向的数据库如果数据库不存在,则......
  • 文档数据库MongoDB
    MongoDB简介:特点:1.提供了一个面向文档储存,操作起来比较简单和容易2.可以设置任何属性的索引,实现更快的排序3.具有较好的水平可扩展性4.支持丰富的查询表达式,可查询文档中内嵌的对象及数组5.可替换已完成文档某个指定的数据字段6.MongoDB中的MapReduce主要是用来对数据进......
  • Docker 安装 MongoDB
    Docker安装MongoDBDocker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化。访问ExploreDocker'sContainerImageRepository|DockerHub,搜索mongo镜像https:/......
  • (C#) IIS 响应标头过滤敏感信息(如:Server/X-Powered-By等) 运维知识
    背景:再一次净网行动中,客户要求安全改造发现了接口请求的header标头中出现如图中的敏感信息。 说明:其意义在于告知浏网站是用什么语言或者框架编写的。解决办法就是修改该响应头为一个错误的值,将攻击者导向一个错误的方向。准备:这里只说windows的iis环境,不考虑其他服务器......