关于aggregation 语法和表达式大全(最新3.4版)
| 阶段名 | 介绍 |
| $collStats | 返回表状态 |
| $project | 重新构造表的结构,比如删除或增加字段,每个输入文档对应一个输出文档 |
| $match | 过滤文档流,将匹配到的文档未修改的传递到下一个阶段。$match操作使用标准的MongoDB查询。对于每个输入文档,输出一个文档(匹配)或者零个文档(未匹配) |
| $redact | 通过基于存储在文档本身中的信息限制每个文档的内容,重新构造流中的每个文档。 包含$project和$match的功能。 可以用来实现字段级修饰。 对于每个输入文档,输出一个或零个文档。 |
| $limit | 将未修改的前n个文档传递到管道,其中n是指定的限制。 对于每个输入文档,输出一个文档(对于前n个文档)或零文档(在前n个文档之后)。 |
| $skip | 跳过前n个文档,其中n是指定的跳过数,并将未修改的其余文档传递到管道。 对于每个输入文档,输出零文档(对于前n个文档)或一个文档(如果在第一个文档之后)。 |
| $unwind | 从输入文档解构数组字段,以输出用于eachelement的文档。 每个输出文档都用元素值替换数组。 对于每个输入文档,输出n个文档,其中n是数组元素的数量,对于空数组可以为零。 |
| $group | 对指定的标识符表达式输入文档进行分组,并将累加器表达式(如果指定)应用于每个分组。使用所有输入文档,并为每个不同的组输出一个文档。 输出文档仅包含标识符字段,如果指定,则包含累积字段。 |
| $sample | 从其输入中随机选择指定数量的文档。 |
| $sort | 通过指定的排序键重新排序文档。 只有文档顺序改变; 文件保持不变。 对于每个输入文档,输出一个文档。 |
| $geoNear | 根据与地理空间点的接近度返回有序文档。 结合地理空间数据的$match,$sort和$limit的功能。 输出文档包括附加距离字段,并且可以包括位置标识符字段。 |
| $lookup | 对同一数据库中的另一个集合执行left outer join,以过滤来自“joined”集合的文档以进行处理。 |
| $out | 将聚合管道的结果文档写入集合。 要使用$out阶段,它必须是管道中的最后一个阶段。 |
| $indexStats | 返回有关集合的每个索引的使用的统计信息。 |
| $facet | 在同一组输入文档的单个阶段中处理多个聚合管道。 允许创建能够在单个阶段中跨多个维或面的表征数据的多面聚合。 |
| $bucket | 根据指定的表达式和存储桶边界将传入文档归入组(称为存储桶)。 |
| $bucketAuto | 根据指定的表达式将传入文档归入特定数量的组(称为存储桶)。 将自动确定存储桶边界,以尝试将文档均匀分布到指定数量的存储桶中。 |
| $sortByCount | 根据指定表达式的值对传入文档进行分组,然后计算每个不同组中的文档计数。$sortByCount阶段等同于$group + $sort序列。 |
| $addFields | 向文档添加新字段。 输出包含输入文档和新添加字段中所有现有字段的文档。 |
| $replaceRoot | 用指定的嵌入文档替换文档。 操作将替换输入文档中的所有现有字段,包括_id字段。 指定嵌入在输入文档中的文档,以将嵌入的文档提升到顶级。 |
| $count | 返回聚合管道此阶段文档数的计数。 |
| $graphLookup | 对集合执行递归搜索。 对每个输出文档,添加一个新的数组字段,其中包含该文档的递归搜索的遍历结果。 |
| 表达式名 | 介绍 |
| $and | 仅当其所有表达式计算结果为true时,才返回true。 接受任意数量的参数表达式。 |
| $or | 当其任何一表达式求值为true时返回true。 接受任意数量的参数表达式。 |
| $not | 返回与其参数表达式相反的布尔值。 接受单个参数表达式。 |
| 表达式名 | 介绍 |
| $setEquals | 如果多个不同的输入中集具有相同的元素,则返回true。 接受两个或多个参数表达式。 |
| $setIntersection | 返回具有出现在所有输入集中的元素的集合。 接受任意数量的参数表达式。(取交集) |
| $setUnion | 返回具有出现在任何输入集中的元素的集合。 接受任意数量的参数表达式。(取并集) |
| $setDifference | 返回一个包含出现在第一个集合中但不在第二个集合中的元素的集合; 即执行第二组相对于第一组的相对互补。 只接受两个参数表达式。 |
| $setIsSubset | 如果第一个集合的所有元素都出现在第二个集合中,则返回true,包括第一个集合等于第二个集合; 即不是严格的子集。 只接受两个参数表达式。 |
| $anyElementTrue | 如果集合的任何元素求值为true,则返回true; 否则返回false。 接受单个参数表达式。 |
| $allElementsTrue | 如果集合的任何元素都不为false,则返回true,否则返回false。 接受单个参数表达式。 |
| 表达式名 | 介绍 |
| $cmp | 返回:如果两个值相等,则为0;如果第一个值大于第二个值,则返回1;如果第一个值小于第二个值,返回-1。 |
| $eq | 如果值是相等,则返回true。 |
| $gt | 如果第一个值大于第二个值,则返回true。 |
| $gte | 如果第一个值大于或等于第二个值,则返回true。 |
| $lt | 如果第一个值小于第二个值,则返回true。 |
| $lte | 如果第一个值小于或等于第二个值,则返回true。 |
| $ne | 如果值不相等,则返回true。 |
| 表达式名 | 介绍 |
| $abs | 返回数字的绝对值。 |
| $add | 添加数字以返回总和,或者添加数字和返回新日期的日期。 如果添加数字和日期,则将数字视为毫秒。 接受任意数量的参数表达式,但最多只有一个表达式可以解析为日期。 |
| $ceil | 返回大于或等于指定数字的最小整数。 |
| $divide | 返回将第一个数除以第二个数的结果。 接受两个参数表达式。 |
| $exp | 将e指定为指定的指数。 |
| $floor | 返回小于或等于指定数字的最大整数。 |
| $ln | 计算数字的自然对数。 |
| $log | 计算指定基数中的数字的对数。 |
| $log10 | 计算基数为10的对数。 |
| $mod | 返回第一个数除以第二个数的余数。 接受两个参数表达式。 |
| $multiply | 返回多个数相乘的结果。 接受任意数量的参数表达式。 |
| $pow | 将数字增加到指定的指数。 |
| $sqrt | 计算平方根。 |
| $subtract | 返回从第一个值减去第二个值的结果。 如果两个值是数字,则返回差值。 如果两个值都是日期,则返回以毫秒为单位的差值。 如果两个值是日期和以毫秒为单位的数字,则返回生成的日期。 接受两个参数表达式。 如果两个值是日期和数字,请先指定日期参数,因为从数字中减去日期无意义。 |
| $trunc | 将数字截断为其整数。 |
| 表达式名 | 介绍 |
| $concat | 连接任意数量的字符串。 |
| $indexOfBytes | 搜索字符串以查找子字符串的出现,并返回第一个出现的UTF-8字节索引。 找不到子串,返回-1。 |
| $indexOfCP | 搜索字符串以查找子串的出现,并返回第一个出现的UTF-8代码点索引。 找不到子串,返回-1。 |
| $split | 基于分隔符将字符串拆分为子字符串。 返回一个子串数组。 如果在字符串中未找到定界符,则返回包含原始字符串的数组。 |
| $strcasecmp | 执行不区分大小写的字符串比较,并返回:如果两个字符串相等,则返回0,如果第一个字符串大于第二个,则返回1,如果第一个字符串小于第二个,则返回-1。 |
| $strLenBytes | 返回字符串中UTF-8编码字节的数目。 |
| $strLenCP | 返回字符串中UTF-8代码点的数量。 |
| $substr | 已弃用。 使用$ substrBytes或$ substrCP。 |
| $substrBytes | 返回字符串的子字符串。 以字符串中指定的UTF-8字节索引(从零开始)开始,并继续指定的字节数。 |
| $substrCP | 返回字符串的子字符串。 以字符串中指定的UTF-8代码点(CP)索引(从零开始)开始,并继续指定的代码点数。 |
| $toLower | 将字符串转换为小写。 接受单个参数表达式。 |
| $toUpper | 将字符串转换为大写。 接受单个参数表达式。 |
| 表达式名 | 介绍 |
| $meta | 访问文本搜索元数据。 |
| 表达式名 | 介绍 |
| $arrayElemAt | 返回指定数组索引处的元素。 |
| $concatArrays | 连接数组并返回 |
| $filter | 选择数组的子集以返回只包含与过滤条件匹配的元素的数组。 |
| $indexOfArray | 搜索数组以获取指定值的出现,并返回第一个出现的数组索引。 找不到子串,返回-1。 |
| $isArray | 确定操作数是否为数组。 返回布尔值。 |
| $range | 根据用户定义的输入输出包含整数序列的数组。 |
| $reverseArray | 返回具有相反顺序的元素的数组。 |
| $reduce | 将表达式应用于数组中的每个元素,并将它们组合为单个值。 |
| $size | 返回数组中元素的数量。 接受单个表达式作为参数。 |
| $slice | 返回数组的子集。 |
| $zip | 将两个列表合并在一起。 |
| $in | 返回一个布尔值,表示指定的值是否在数组中。 |
| 表达式名 | 介绍 |
| $literal | 返回值而不进行解析。 用于聚合管道可能解释为表达式的值。 例如,对以$开头的字符串使用$literal表达式,以避免作为字段路径进行解析。 |
| 表达式名 | 介绍 |
| $type | 返回字段的BSON数据类型。 |
| 表达式名 | 介绍 |
| $dayOfYear | 以1到366(闰年)之间的数字形式返回日期的年中某一天的日期。 |
| $dayOfMonth | 以1到31之间的数字形式返回日期的月份中的某一天。 |
| $dayOfWeek | 以1(星期日)和7(星期六)之间的数字形式返回日期的星期几。 |
| $year | 返回日期作为数字的年份(例如2014)。 |
| $month | 返回1(1月)和12(12月)之间的日期的月份。 |
| $week | 将日期的周编号返回为0(该年的第一个星期日之前的部分周)和53(闰年)之间的数字。 |
| $hour | 将日期的小时数返回为0到23之间的数字。 |
| $minute | 将日期的分钟返回为介于0和59之间的数字。 |
| $second | 将日期的秒数返回为0到60(闰秒)之间的数字。 |
| $millisecond | 以0到999之间的数字形式返回日期的毫秒数。 |
| $dateToString | 以格式化的字符串形式返回日期。 |
| $isoDayOfWeek | 返回ISO 8601格式的工作日数字,范围从1(周一)到7(周日)。 |
| $isoWeek | 以ISO 8601格式返回周数,范围从1到53.周数以1开始,包含年份第一个星期四的周(周一到周日)。 |
| $isoWeekYear | 返回ISO 8601格式的年份。 年份从第1周(ISO 8601)的星期一开始,到最后一周的星期日(ISO 8601)结束。 |
| 表达式名 | 介绍 |
| $cond | 三元运算符计算一个表达式,并根据结果返回其他两个表达式之一的值。 在有序列表或三个命名参数中接受三个表达式。 |
| $ifNull | 如果第一个表达式导致空结果,则返回第一个表达式的非空结果或第二个表达式的结果。 空结果包含未定义值或缺少字段的实例。 接受两个表达式作为参数。 第二个表达式的结果可以为null。 |
| $switch | 评估一系列的案例表达式。 当它找到一个计算结果为true的表达式时,$ switch将执行一个指定的表达式并跳出控制流。 |
| 表达式名 | 介绍 |
| $sum | 返回数值总和。 忽略非数字值。 |
| 在版本3.2中更改:在$group和$project阶段都可用。 | |
| $avg | 返回数值的平均值。 忽略非数字值。 |
| 在版本3.2中更改:在$group和$project阶段都可用。 | |
| $first | 从每个组的第一个文档返回一个值。 仅当文档以定义的顺序定义时才定义顺序。 |
| 仅在$group阶段中可用。 | |
| $last | 从每个组的最后一个文档返回一个值。 仅当文档以定义的顺序定义时才定义顺序。 |
| 仅在$group阶段中可用。 | |
| $max | 返回每个组的最高表达式值。 |
| 在版本3.2中更改:在$group和$project阶段都可用。 | |
| $min | 返回每个组的最小表达式值。 |
| 在版本3.2中更改:在$group和$project阶段都可用。 | |
| $push | 返回每个组的表达式值数组。 |
| 仅在$group阶段中可用。 | |
| $addToSet | 返回每个组的唯一表达式值的数组。 数组元素的顺序未定义。 |
| 仅在$group阶段中可用。 | |
| $stdDevPop | 返回输入值的总体标准差。 |
| 在版本3.2中更改:在$group和$project阶段都可用。 | |
| $stdDevSamp | 返回输入值的样本标准偏差。 |
| 在版本3.2中更改:在$group和$project阶段都可用。 |
关于aggregation 语法和表达式大全(最新3.4版)的更多相关文章
- LINQ_to_SQL语法及实例大全
LINQ To SQL 语法及实例大全 2011/4/5 目录 LINQ to SQL语句(1)之Where. 2 Where操作... 2 1.简单形式:... 2 2.关系条件形式:... 2 3 ...
- Python语法 - yield表达式(类似 m = yield i )
yield是个表达式而不仅仅是个语句,所以可以使用x = yield r 这样的语法, yield表达式可以接收send()发出的参数,yield表达式是跟send方法一起配合使用 send方 ...
- dedecms 织梦ping服务插件 最新破解可用版
dedecms 织梦ping服务插件 最新破解可用版 ping_gbk.xml <module> <baseinfo> name=ping服务 team=井哥 time=20 ...
- 《pigcms v6.2最新完美至尊版无任何限制,小猪微信源码多用户微信营销服务平台系统》
<pigcms v6.2最新完美至尊版无任何限制,小猪微信源码多用户微信营销服务平台系统> 前两天分享了套小猪CMS(PigCms)多用户微信营销服务平台系统V6.1完美破解至尊版带微用户 ...
- [转]LINQ To SQL 语法及实例大全
转载自:http://blog.csdn.net/pan_junbiao/article/details/7015633 LINQ to SQL语句(1)之Where Where操作 适用场景:实现过 ...
- 转!!EL表达式大全
EL表达式 1.EL简介 1)语法结构 ${expression} 2)[]与.运算符 EL 提供.和[]两种运算符来存取数据. 当要存取的属性名称中包含一 ...
- LINQ To SQL 语法及实例大全
http://blog.csdn.net/pan_junbiao/article/details/7015633 http://blog.csdn.net/pan_junbiao/article/de ...
- Linq to Sql语法及实例大全
LINQ to SQL语句(1)之Where Where操作 适用场景:实现过滤,查询等功能. 说明:与SQL命令中的Where作用相似,都是起到范围限定也就是过滤作用的 ,而判断条件就是它后面所接的 ...
- 【转】 LINQ To SQL 语法及实例大全
LINQ to SQL语句(1)之Where Where操作 适用场景:实现过滤,查询等功能. 说明:与SQL命令中的Where作用相似,都是起到范围限定也就是过滤作用的,而判断条件就是它后面所接的子 ...
随机推荐
- Js 常用函数
1. 算数函数(Math) 1)Js小数取整 常用于:分页算法 js 小数取整的函 .丢弃小数部分,保留整数部分 js:parseInt(/) .向上取整,有小数就整数部分加1 js: Math.ce ...
- Webpack、Browserify和Gulp
https://www.zhihu.com/question/37020798 https://www.zhihu.com/question/35479764
- commons-io ProxyInputStream,ProxyOutputStream,ProxyReader,ProxyWriter
1.ProxyInputStream: A Proxy stream which acts as expected, that is it passes the method calls on to ...
- JS原型的问题Object和Function到底是什么关系
var F = function(){}; Objcert.prototype.a = function(){}; Function.prototype.b = function(){}; F 既能访 ...
- zookeeper 应用
一,启动一个zk客户端 zookeeper/bin/zkCli.sh ls / 查看根目录下所有节点 create /znode data 创建节点znode,并添加数据内容为data ls /z ...
- Git常用命令速查表
- python调用zabbix接口实现Action配置
要写这篇博客其实我的内心是纠结的,老实说,我对zabbix的了解实在不多.但新公司的需求不容置疑,当我顶着有两个头大的脑袋懵懵转入运维领域时,面前摆着两百多组.上千台机器等着写入zabbix监控的需求 ...
- 将windows上的文件同步到linux上
1.首先下载PSCP.exe,下载地址:http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html 2.将PSCP.exe拷贝到C: ...
- 深入浅出Mybatis系列(六)---objectFactory、plugins、mappers简介与配置
上篇文章<深入浅出Mybatis系列(五)---TypeHandler简介及配置(mybatis源码篇)>简单看了一下TypeHandler, 本次将结束对于mybatis的配置文件的学习 ...
- 使用C++11的一点总结
C++11已不是新鲜技术,但对于我来说,工作中用得还不够多(前东家长时间使用gcc3.4.5,虽然去年升了4.8.2,但旧模块维护还是3.4.5居多:新东家用的是4.4.6,不能完整支持C ...