聚合管道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. 一款NPN三极管测量: BC547C
  2. linux内核杂记(6)-进程调度(1)
  3. python中文词云生成_Python 词云生成
  4. css样式表中的样式覆盖顺序(转)
  5. react笔记-设计复合式控件(三)
  6. c语言填空题题库6,二级C语言题库-填空题.doc
  7. Nginx 原理和架构 | 原力计划
  8. C语言基础专题 - 通过案例历学 - 共用体
  9. MFRC50001T
  10. 纯CSS中的可视数据库库
  11. Oracle LOB 详解
  12. Lesson 8 question 1 Dominator
  13. 入行数据分析要知道什么是概括性度量
  14. Excel使用VBA自动调整插入图片大小到单元格
  15. fastreport问题集合
  16. CSS学习笔记--段落格式化
  17. 解决win7电脑无法打开此计算机组策略对象的问题
  18. My SQL的安装与卸载
  19. Caffe Examples
  20. python cad 提取高程点_CAD地形图如何提取出高程点文件?

热门文章

  1. Vulnhub系列:FristLeaks
  2. 一刷代码随想录完结篇
  3. linux复制文件scp命令,Linux 中的文件复制cp命令和scp命令详解
  4. 从零开始搭建以太坊区块链
  5. Windows Server 2012打开端口
  6. Python3 集成openpyxl 模块
  7. 小波变换(1)多分辨率分析:尺度函数和小波函数
  8. Vagrant 简介与常用命令
  9. flutter的千层蛋糕 - The Layer Cake
  10. ZDT_X57步进闭环驱动说明书Rev1.3