聚合管道aggregate

  1. aggregate介绍

MongoDB的聚合管道将MongoDB文档在一个管道处理完毕后将结果传递给下一个管道处理。管道操作是可以重复的。管道在Unix和Linux中一般用于将当前命令的输出结果作为下一个命令的参数。
aggregation 它是数据聚合的一个新框架,其概念类似于数据处理的管道。 每个文档通过一个由多个节点组成的管道,每个节点有自己特殊的功能(分组、过滤等),文档经过管道处理后,最后输出相应的结果。管道基本的功能有两个:
一是对文档进行“过滤”,也就是筛选出符合条件的文档
二是对文档进行“变换”,也就是改变文档的输出形式
其他的一些功能还包括按照某个指定的字段分组和排序等。而且在每个阶段还可以使用表达式操作符计算平均值和拼接字符串等相关操作。管道提供了一个MapReduce 的替代方案,MapReduce使用相对来说比较复杂,而管道的拥有固定的接口(操作符表达),使用比较简单,对于大多数的聚合任务管道一般来说是首选方法。

  1. 管道操作符介绍

$project:包含、排除、重命名和显示字段
$match:查询,需要同find()一样的参数
$limit:限制结果数量
$skip:忽略结果的数量
$sort:按照给定的字段排序结果
$group:按照给定表达式组合结果
$unwind:分割嵌入数组到自己顶层文件
$geoNear:返回基于接近地理空间点的有序的文档流

  1. 组聚合操作符介绍

$addToSet:返回在该组中的每个文档所选择的字段的所有唯一值的数组
$first:返回组中的第一个值
$last:返回组中的最后一个值
$max:返回组中的最大值
$min:返回组中的最小值
$avg:返回组中的平均值
$push:返回在该组中的每个文档所选择的字段的所有值的数组
$sum:返回组中的汇总值

#使用管道可以将多种不同的聚合统计记录同时返回

db.person.aggregate([{$group:{

      _id:"$name",count:{$sum:1},total:{$sum:"$age"},max:{$max:"$age"},min:{$min:"$age"},avg:{$avg:"$age"}}}])

{ "_id" : "jason", "count" : 2, "total" : 58, "max" : 30, "min" : 28, "avg" : 29}
{ "_id" : "lorraine", "count" : 2, "total" : 47, "max" : 25, "min" : 22, "avg" :23.5 }

聚合管道aggregate相关推荐

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

    在之前的两篇文章 Mongodb中数据聚合之基本聚合函数count.distinct.group 和 Mongodb中数据聚合之MapReduce 中,我们已经对数据聚合提供了两种实现方式,今天,在这 ...

  2. MongoDB 的高级查询 aggregate 聚合管道

    一.MongoDB 聚合管道(Aggregation Pipeline) 使用聚合管道可以对集合中的文档进行变换和组合. 实际项目:表关联查询.数据的统计. MongoDB 中使用 db.COLLEC ...

  3. mongoose 入门(四)使用aggregate 聚合管道、使用 populate 实现关联查询

    使用aggregate 聚合管道.使用 populate 实现关联查询 一.mongoose中两个表关联查询aggregate 1.案例一 2.案例二 二.mongoose中多表(N个表)关联查询ag ...

  4. MongoDB聚合(aggregate)常用操作及示例

    简介 MongoDB 中聚合(aggregate)主要用于处理数据(诸如统计平均值,求和等),并返回计算后的数据结果. 有点类似 SQL 语句中的 count(*). 常用操作 表达式 描述 $mat ...

  5. MongoDB 聚合管道(Aggregation Pipeline)

    管道概念 POSIX多线程的使用方式中, 有一种很重要的方式-----流水线(亦称为"管道")方式,"数据元素"流串行地被一组线程按顺序执行.它的使用架构可参考 ...

  6. Eggjs笔记:详解Mongoose的聚合管道以及populate实现关联查询

    基于mongodb的聚合管道 此处忽略之前mongodb在eggjs中需要配置的步骤,前文已有说明,现在开始在controller中调用(应该封装到service中的,仅作为示例) const res ...

  7. 掌握聚合管道操作,熟悉Map-Reduce操作

    一.实验综述 1.实验目的及要求 (1)掌握聚合管道操作 (2)熟悉Map-Reduce操作 (3)掌握索引相关概念 (4)掌握索引操作 实验过程: 1.数据库.集合.文档内容均使用实验二中的数据 2 ...

  8. MongoDB——聚合管道之$match和$count操作

    目录 一.聚合管道之$match的概述 二.聚合管道之$count的概述 三.数据准备 四.聚合管道之$match操作示例 五.聚合管道之$count的示例 一.聚合管道之$match的概述 $ ma ...

  9. MongoDB——聚合管道之$project操作

    目录 一.数据准备 二.聚合管道之$project操作示例 2.1.查询集合中的数据 2.2.$project 可以表示投影操作, 将原始字段投影成指定名称 2.3.$project 可以灵活控制输出 ...

最新文章

  1. PSP DAILY软件功能说明书
  2. 微信突然更新,新增了这些功能...
  3. 物理光学11 衍射的基本概念与惠更斯原理
  4. 成功解决ModuleNotFoundError: No module named ‘sklearn.cross_validation‘
  5. leangoo如何邀请成员加入看板?
  6. python传文件给java_python使用简单http协议来传送文件
  7. Freelancer.com(原GAF – GetAFreelancer)帐户里的钱如何取出?
  8. Linux服务器架设笔记-Squid服务器配置
  9. 检测编码并制作一切UTF-8
  10. opencv findcontour查找最大的内轮廓
  11. 科技文献检索(六)——检索语言
  12. HBuilderX 插件下载失败 解决
  13. WEB前端一些兼容IE8 浏览器的写法
  14. 怎么样用计算机弹出小星星,【钢琴入门自写教程 1】小星星弹奏
  15. 1010. Pairs of Songs With Total Durations Divisible by 60*
  16. 毕业设计 基于单片机的智能盲人头盔系统 - 导盲杖 stm32
  17. 手机连接电脑linux系统怎么样的,手机真能取代电脑吗?谈手机/PC系统的大一统...
  18. java 泛型 问号_Java中泛型 问号的作用
  19. 倾角传感器如何通过精度和分辨率进行选型
  20. 发票二维码含义, 及java生成二维码

热门文章

  1. 高层次人才综合服务平台建设方案,人才平台一站式系统开发
  2. java 数据库并发访问_java – 提供IllegalStateException的并发数据库访问
  3. LVS FULLNAT
  4. Google、Facebook等美国IT名企在面试中最看重什么?
  5. 深度学习 --- 径向基神经网络RBF详解
  6. sql拼接字段,拼接同1行的不同列,拼接同1列的不同行
  7. HDUOJ 2191 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活
  8. HTML -- 渐变
  9. php上传图片的原理分析
  10. 如何在博客文章中使用表情符号?