Docs 菜单
Docs 主页
/
MongoDB Manual
/ /

聚合管道操作符

在此页面上

  • 兼容性
  • 表达式运算符
  • 算术表达式操作符
  • 数组表达式操作符
  • 布尔表达式操作符
  • 比较表达式操作符
  • 条件表达式操作符
  • 自定义聚合表达式操作符
  • 数据大小操作符
  • 日期表达式操作符
  • 字面值表达式操作符
  • 其他操作符
  • 对象表达式操作符
  • 集表达式操作符
  • 字符串表达式操作符
  • 文本表达式操作符
  • 三角函数表达式操作符
  • 类型表达式操作符
  • 累加器 ($group, $bucket, $bucketAuto, $setWindowFields)
  • 累加器(其他阶段中)
  • 变量表达式操作符
  • 窗口运算符
  • 按字母顺序排列的表达式操作符列表

聚合管道操作符与 MongoDB Atlas 和本地部署环境兼容。

注意

有关特定操作符(包括事务语法和示例)的详细信息,请单击该操作符的参考页面链接。

您可以对在以下环境中托管的部署使用聚合管道操作符:

  • MongoDB Atlas :用于在云中部署 MongoDB 的完全托管服务

  • MongoDB Enterprise:基于订阅、自我管理的 MongoDB 版本

  • MongoDB Community:源代码可用、免费使用且可自行管理的 MongoDB 版本

这些表达式操作符可用于构造在 聚合管道阶段 使用的 表达式 。

操作符表达式类似于接受参数的函数。通常,这些表达式采用参数数组,并具有以下形式:

{ <operator>: [ <argument1>, <argument2> ... ] }

如果操作符接受单个参数,则可以省略指定参数列表的外部数组:

{ <operator>: <argument> }

如果该参数是一个字面数组,为避免解析歧义,必须在 $literal 表达式中使用该字面数组,或者保留指定参数列表的外部数组。

算术表达式对数字执行数学运算。一些算术表达式也可以支持日期算术。

名称
说明
返回一个数字的绝对值。
添加数字以返回总和,或添加数字和日期以返回新日期。如果添加数字和日期,则将数字视为毫秒。接受任意数量的参数表达式,但一个表达式最多只能解析为一个日期。
返回大于或等于指定数字的最小整数。
返回第一个数字除以第二个数字的结果。接受两个参数表达式。
e 提升到指定的指数。
返回小于或等于指定数字 最大整数。
计算数字的自然对数。
以指定基数计算数字的对数。
计算一个数字以 10 为底的对数。
返回第一个数字除以第二个数字的余数。接受两个参数表达式。
将数字相乘以返回乘积。接受任意数量的参数表达式。
将一个数字提升到指定的指数。
将数字舍入到整数指定的小数位。
计算平方根。
返回第一个值减去第二个值后的结果。如果这两个值均为数字,则返回差值。如果这两个值均为日期,则返回以毫秒为单位的差值。如果这两个值一个为日期而另一个为数字(以毫秒为单位),则返回生成的日期。接受两个参数表达式。如果这两个值一个为日期而另一个为数字,请先指定日期参数,因为用数字减去日期没有意义。
将数字截断为整数指定的小数位。
名称
说明
返回位于指定数组索引处的元素。
将键值对数组转换为文档。
连接数组以返回连接后的数组。
选择数组的子集,以返回仅包含与筛选条件匹配的元素的数组。
返回第一个数组元素。 与$first累加器不同。
返回一个布尔值,它可表示指定的值是否在数组中。
搜索数组中出现的指定值,并返回首次出现的数组索引。如果未找到该子字符串,则返回 -1
确定操作数是否为数组。返回一个布尔值。
返回最后一个数组元素。 与$last累加器不同。
对数组的每个元素应用子表达式,并按顺序返回生成值的数组。接受已命名的参数。
将文档转换为表示键值对的文档数组。
根据用户定义的输入,输出一个包含整数序列的数组。
将表达式应用于数组中的每个元素,并将它们组合成一个值。
返回元素顺序相反的数组。
返回数组中元素的个数。接受单个表达式作为参数。
返回数组的子集。
将两个数组进行合并。

布尔表达式可将其参数表达式作为布尔值进行计算,并返回一个布尔值以作为结果。

false 布尔值之外,布尔表达式还将以下值计算为 falsenull0undefined 值。布尔表达式将所有其他值计算为 true,包括非零数值和数组。

名称
说明
仅当所有表达式的计算结果均为 true 时才返回 true。接受任意数量的参数表达式。
返回与参数表达式相反的布尔值。接受单个参数表达式。
任何 表达式的计算结果为 true 时,返回 true。接受任意数量的参数表达式。

比较表达式返回一个布尔值,但 $cmp 除外,它返回一个数字。

比较表达式接受两个参数表达式,并使用不同类型的值的指定 BSON 比较顺序来比较值和类型。

名称
说明
如果两个值相等,则返回 0;如果第一个值大于第二个值,则返回 1;如果第一个值小于第二个值,则返回 -1
如果这些值相等,则返回 true
如果第一个值大于第二个值,则返回 true
如果第一个值大于等于第二个值,则返回 true
如果第一个值小于第二个值,则返回 true
如果第一个值小于等于第二个值,则返回 true
如果值相等,则返回 true
名称
说明
一种三元运算符,它可用于计算一个表达式,并根据结果返回另外两个表达式之一的值。接受有序列表中的三个表达式或三个已命名的参数。
返回第一个表达式的非空结果;或者,如果第一个表达式生成空结果,则返回第二个表达式的结果。Null 结果包含未定义值或缺失字段的情况。接受两个表达式以作为参数。第二个表达式的结果可能为 null。
对一系列 case 表达式求值。当它找到计算结果为 true 的表达式时,$switch 会执行指定表达式并脱离控制流。
名称
说明
定义自定义累加器函数。
定义自定义函数。

以下操作符返回数据元素的大小:

名称
说明
返回给定字符串或二进制数据值内容的大小(以字节为单位)。
以字节为单位返回给定文档(即 bsontype Object) 的大小(当编码为 BSON 时)。

以下操作符返回日期对象或日期对象的组件:

名称
说明
向日期对象添加多个时间单位。
返回两个日期之间的差值。
根据日期的组成部分构造一个 BSON 日期对象。
将日期/时间字符串转换为日期对象。
从日期对象中减去多个时间单位。
返回包含日期组成部分的文档。
以格式化字符串的形式返回日期。
截断日期。
以介于 1 和 31 之间的数字返回某一日期的“月中的某一天”。
以 1(星期日)和 7(星期六)之间的数字形式返回以星期表示的日期。
以 1 到 366(闰年)之间的数字形式返回返回日期的年月日。
以数字形式返回日期中的小时部分(0 到 23)。
以 ISO 8601 格式返回工作日数字,范围为 1(星期一)到 7(星期日)。
以 ISO 8601 格式返回周数,范围从 153。周数从 1 开始,即包含一年中第一个星期四的那个星期(星期一到星期日)。
以 ISO 8601 格式返回年份号。一年从第一周的星期一 (ISO 8601) 开始,到最后一周的星期日 (ISO 8601) 结束。
以 0 到 999 之间的数字形式返回日期的毫秒数。
返回日期的分钟数(0 到 59)。
以 1(一月)到 12(十二月)之间的数字形式返回日期的月份。
以 0 到 60 之间的数字返回日期的秒数(跳秒)。
将数值转换为日期。
以 0(一年中第一个星期日之前的部分周)和 53(闰年)之间的数字形式返回日期的周数。
以数字形式返回日期的年份(例如 2014)。

以下算术操作符可以使用日期操作数:

名称
说明
添加数字和日期以返回新日期。如果添加数字和日期,则将数字视为毫秒。接受任意数量的参数表达式,但一个表达式最多只能解析为一个日期。
返回第一个值减去第二个值后的结果。如果这两个值均为日期,则返回以毫秒为单位的差值。如果这两个值一个为日期而另一个为数字(以毫秒为单位),则返回生成的日期。接受两个参数表达式。如果这两个值一个为日期而另一个为数字,请先指定日期参数,因为用数字减去日期没有意义。
名称
说明
返回一个值而不进行解析。用于聚合管道可解释为表达式的值。例如,对以美元符号 ($) 开头的字符串使用 $literal 表达式,以避免解析为字段路径。
名称
说明

从文档中返回指定字段的值。您可以使用 $getField 检索名称中包含句点 (.) 或以美元符号 ($) 开头的字段的值。

版本 5.0 中的新增功能

返回介于 0 和 1 之间的随机浮点数。
以给定的采样率随机选择文档。虽然每次运行所选文件的确切数量各不相同,但所选数量近似于以文件总数百分比表示的采样率。
名称
说明

将多个文档合并为一个文档。

版本 3.6 中的新增功能

将文档转换为表示键值对的文档数组。

版本 3.6 中的新增功能

添加、更新或删除文档中的指定字段。您可以使用 $setField 添加、更新或删除名称包含句点 (.) 或以美元符号 ($) 开头的字段。

版本 5.0 中的新增功能

集合表达式对数组执行集合操作,将数组视为集合。集合表达式会忽略每个输入数组中的重复条目和元素的顺序。

如果集操作返回一个集,则该操作会筛选掉结果中的重复项,以输出仅包含唯一条目的数组。输出数组中元素的顺序未指定。

如果集合包含嵌套数组元素,则集合表达式不会进入嵌套数组,而是在顶层计算数组。

名称
说明
如果集合中没有元素计算结果为 false ,则返回 true,否则返回 false。接受单个参数表达式。
如果集合中的任何元素的计算结果为 true,则返回 true;否则,返回 false。接受单个参数表达式。
返回一个集,其中包含出现在第一个集中但未出现在第二个集中的元素; ie 执行 相对补 第二组相对于第一组的大小。只接受两个参数表达式。
如果输入集具有相同的不同元素,则返回 true。接受两个或多个参数表达式。
返回一个集,其中包含出现在所有输入集中的元素。接受任意数量的参数表达式。
true如果第一个集合的所有元素都出现在第二个集合中(包括第一个集合等于第二个集合的情况),则返回 ;即不是 严格子集 。只接受两个参数表达式。
返回一个集,其中包含出现在任何输入集中的元素。

字符串表达式,除了 $concat 之外,字符串表达式只对 ASCII 字符串有明确定义的行为。

$concat 行为是明确定义的,无论使用什么字符。

名称
说明
连接任意数量的字符串。
将日期/时间字符串转换为日期对象。
以格式化字符串的形式返回日期。
搜索字符串中出现的子字符串,并返回首次出现的 UTF-8 字节索引。如果未找到该子字符串,则返回 -1
在字符串中搜索子字符串的出现位置,并返回第一次出现时的 UTF-8 码位索引。如果未找到该子字符串,则返回 -1
删除字符串开头和结尾的空白或指定字符。
将正则表达式应用于字符串,并返回第一个匹配子字符串的信息。
将正则表达式 (regex) 应用于字符串,并返回有关所有匹配子字符串的信息。
将正则表达式 (regex) 应用于字符串并返回一个布尔值,它可表示是否已找到匹配项。
替换给定输入中匹配字符串的第一个实例。
替换给定输入中匹配字符串的所有实例。
删除字符串结尾的空白或指定字符。
根据分隔符将字符串拆分为子字符串。返回子字符串数组。如果在字符串中找不到分隔符,则返回包含原始字符串的数组。
返回字符串中 UTF-8 编码的字节数。
返回字符串中 UTF-8 代码点的数量。
执行不区分大小写的字符串比较并返回:如果两个字符串相等,则返回 0;如果第一个字符串大于第二个字符串,则返回 1;如果第一个字符串小于第二个字符串,则返回 -1
已弃用。使用$substrBytes$substrCP
返回字符串的子串。从字符串中指定的 UTF-8 字节索引(从零开始)处的字符开始,持续指定的字节数。
返回字符串的子串。从字符串中指定 UTF-8 代码点 (CP) 索引(从零开始)处的字符开始,持续指定的代码点数。
将字符串转换为小写。接受单个参数表达式。
将值转换为字符串。
删除字符串开头和结尾的空白或指定字符。
将字符串转换为大写。接受单个参数表达式。
名称
说明
访问与聚合操作相关的每个文档的可用元数据。

三角表达式对数字执行三角运算。示角度的值始终以弧度为单位输入或输出。使用 $degreesToRadians$radiansToDegrees 在度数和弧度测量值之间转换。

名称
说明
返回以弧度为单位测量的某一值的正弦值。
返回以弧度为单位测量的某一值的余弦。
返回以弧度为单位来测量的某一值的正切值。
以弧度为单位返回值的反正弦。
以弧度为单位返回值的反余弦。
以弧度为单位返回某一值的反切值(弧正切值)。
以弧度为单位返回 y / x 的反正切,其中 yx 分别为传递给该表达式的第一个值和第二个值。
以弧度为单位返回数值的反双曲正弦(双曲弧正弦)值。
以弧度为单位返回数值的反双曲余弦(双曲弧余弦)值。
以弧度为单位返回数值的反双曲正切(双曲弧切)值。
返回以弧度为单位来测量的某一值的双曲正弦值。
返回以弧度为单位的值的双曲余弦值。
以弧度为单位返回数值的双曲正切值。
将值从度数转换为弧度。
将值从弧度转换为度数。
名称
说明
将数值转换为指定类型。

如果指定表达式解析为 integerdecimaldoublelong,则返回布尔值 true

如果表达式解析为任何其他 BSON 类型null 或缺失字段,返回布尔值 false

将值转换为布尔值。
将数值转换为日期。
将值转换为 Decimal128。
将值转换为双精度值。
将值转换为整数。
将值转换为长整数。
将值转换为 ObjectId。
将值转换为字符串。
返回字段的 BSON 数据类型。

聚合累加器操作符:

5.0 版本中的更改

名称
说明
返回用户定义的累加器函数的结果。

返回每个群组的唯一表达式值数组。未定义数组元素的排序。

5.0 版中的更改:可在 $setWindowFields 阶段使用。

返回数值的平均值。忽略非数字值。

5.0 版中的更改:可在 $setWindowFields 阶段使用。

返回群组中的文档数。

有别于 $count 管道阶段。

5.0 版新增功能:可在 $group$setWindowFields 阶段使用。

返回群组中第一个文档的表达式结果。

5.0 版中的更改:可在 $setWindowFields 阶段使用。

返回群组中最后一份文档的表达式结果。

5.0 版中的更改:可在 $setWindowFields 阶段使用。

返回每个群组的最大表达式值。

5.0 版中的更改:可在 $setWindowFields 阶段使用。

返回通过组合每个组的输入文档创建的文档。

返回每个群组的最小表达式值。

5.0 版中的更改:可在 $setWindowFields 阶段使用。

返回每组中文档的大量表达式值。

5.0 版中的更改:可在 $setWindowFields 阶段使用。

返回输入值的总体标准偏差。

5.0 版中的更改:可在 $setWindowFields 阶段使用。

返回输入值的样本标准偏差。

5.0 版中的更改:可在 $setWindowFields 阶段使用。

返回数值的总和。忽略非数字值。

5.0 版中的更改:可在 $setWindowFields 阶段使用。

一些可用作 $group 阶段累加器的操作符也可用于其他阶段,但不能作为累加器。用于其他阶段使用,这些操作符不维护其状态,并且可以将单个参数或多个参数作为输入。有关详细信息,请参阅特定操作符页面。

5.0 版本中的更改

以下累加器操作符在 $project$addFields$set、(从 MongoDB 5.0 开始)$setWindowFields 阶段中也可用。

名称
说明
返回每个文档中指定表达式或表达式列表的平均值。忽略非数字值。
返回群组中第一个文档的表达式结果。
返回群组中最后一份文档的表达式结果。
返回每个文档中指定表达式或表达式列表的最大值
返回针对每个文档的指定表达式或表达式列表的最小值
返回输入值的总体标准偏差。
返回输入值的样本标准偏差。
返回数值的总和。忽略非数字值。
名称
说明

定义要在子表达式范围内使用的变量,并返回这些子表达式的结果。接受已命名的参数。

接受任意数量的参数表达式。

版本 5.0 中的新增功能

窗口操作符从集合(称为窗口)中定义的文档范围返回值。窗口$setWindowFields 阶段定义,从 MongoDB 5.0 开始可用。

以下窗口操作符可在 $setWindowFields 阶段使用。

名称
说明

返回对每份文档应用表达式所产生的所有唯一值的数组。

5.0 版中的更改:可在 $setWindowFields 阶段使用。

返回指定表达式的平均值。忽略非数字值。

5.0 版中的更改:可在 $setWindowFields 阶段使用。

返回群组或窗口中的文档数。

有别于 $count 管道阶段。

版本 5.0 中的新增功能

返回两个数值表达式的总体协方差。

版本 5.0 中的新增功能

返回两个数值表达式的样本协方差。

版本 5.0 中的新增功能

返回某文档在 $setWindowFields 阶段分区中相对于其他文档的位置(称为排名)。这些排名没有差异。并列可获得相同排名。

版本 5.0 中的新增功能

返回指定窗口内的平均变化率。

版本 5.0 中的新增功能

返回文档在 $setWindowFields 阶段分区中的位置(称为文档编号)并列会导致相邻文件编号不同。

版本 5.0 中的新增功能

返回数值表达式的指数移动平均值。

版本 5.0 中的新增功能

返回组或 窗口 中第一个文档的 表达式 结果。

5.0 版中的更改:可在 $setWindowFields 阶段使用。

返回曲线下面积的近似值。

版本 5.0 中的新增功能

返回组或 窗口 中最后一个文档的 表达式 结果。

5.0 版中的更改:可在 $setWindowFields 阶段使用。

返回对每份文档应用表达式后的最小值。

5.0 版中的更改:可在 $setWindowFields 阶段使用。

返回对每份文档应用表达式后的最小值。

5.0 版中的更改:可在 $setWindowFields 阶段使用。

返回对每个文档应用表达式后所得值的数组。

5.0 版中的更改:可在 $setWindowFields 阶段使用。

返回一个文档在 $setWindowFields 阶段分区中相对于其他文档的位置(称为排名)。

版本 5.0 中的新增功能

返回在 $setWindowFields 阶段的分区中,应用于目标文档的表达式的值。目标文档通过与当前文档的相对位置进行指定。

版本 5.0 中的新增功能

返回对每个文档应用数值表达式所得的总体标准差。

5.0 版中的更改:可在 $setWindowFields 阶段使用。

返回对每个文档应用数值表达式所得的样本标准差。

5.0 版中的更改:可在 $setWindowFields 阶段使用。

返回对每份文档应用数值表达式所得的总和。

5.0 版中的更改:可在 $setWindowFields 阶段使用。

名称
说明
返回一个数字的绝对值。
返回用户定义的累加器函数的结果。
以弧度为单位返回值的反余弦。
以弧度为单位返回数值的反双曲余弦(双曲弧余弦)值。
添加数字以返回总和,或添加数字和日期以返回新日期。如果添加数字和日期,则将数字视为毫秒。接受任意数量的参数表达式,但一个表达式最多只能解析为一个日期。

返回每个群组的唯一表达式值数组。未定义数组元素的排序。

在版本 5.0 中进行了更改:可在$setWindowFields阶段使用。

如果集合中没有元素计算结果为 false ,则返回 true,否则返回 false。接受单个参数表达式。
仅当所有表达式的计算结果均为 true 时才返回 true。接受任意数量的参数表达式。
如果集合中的任何元素的计算结果为 true,则返回 true;否则,返回 false。接受单个参数表达式。
返回位于指定数组索引处的元素。
将键值对数组转换为文档。
以弧度为单位返回值的反正弦值。
以弧度为单位返回数值的反双曲正弦值。
以弧度为单位返回某一值的反切值(弧正切值)。
以弧度为单位返回 y / x 的反正切,其中 yx 分别为传递给该表达式的第一个值和第二个值。
以弧度为单位返回数值的反双曲正切(双曲弧切)值。

返回数值的平均值。忽略非数字值。

在版本 5.0 中进行了更改:可在$setWindowFields阶段使用。

返回给定字符串或二进制数据值内容的大小(以字节为单位)。

4.4 版本新增

以字节为单位返回给定文档(即 bsontype Object) 的大小(当编码为 BSON 时)。

4.4 版本新增

返回大于或等于指定数字的最小整数。
返回:如果两个值相等,则返回0 ;如果第一个值大于第二个值,则返回1如果第一个值小于第二个值,则返回-1
连接任意数量的字符串。
连接数组以返回连接后的数组。
一种三元运算符,它可用于计算一个表达式,并根据结果返回另外两个表达式之一的值。接受有序列表中的三个表达式或三个已命名的参数。
将数值转换为指定类型。
返回以弧度为单位测量的某一值的余弦。
返回以弧度为单位的值的双曲余弦值。

返回群组或窗口中的文档数。

版本 5.0 中的新增功能:可在$group$setWindowFields阶段使用。

有别于 $count 管道阶段。

返回两个数值表达式的总体协方差。

版本 5.0 中的新增功能:可在$setWindowFields阶段使用。

返回两个数值表达式的样本协方差。

版本 5.0 中的新增功能:可在$setWindowFields阶段使用。

向日期对象添加多个时间单位。
返回两个日期之间的差值。
根据日期的组成部分构造一个 BSON 日期对象。
从日期对象中减去多个时间单位。
截断日期。
返回包含日期组成部分的文档。
以日期对象的形式返回日期/时间。
以格式化字符串的形式返回日期。
以介于 1 和 31 之间的数字返回某一日期的“月中的某一天”。
以 1(星期日)和 7(星期六)之间的数字形式返回以星期表示的日期。
以 1 到 366(闰年)之间的数字形式返回返回日期的年月日。
将值从度数转换为弧度。

返回已排序文档的相对位置。 位置没有间隙。

版本 5.0 中的新增功能:可在$setWindowFields阶段使用。

返回指定窗口内的平均变化率。

版本 5.0 中的新增功能:可在$setWindowFields阶段使用。

返回第一个数字除以第二个数字的结果。接受两个参数表达式。

返回文档在分区中的位置(称为文档编号)。

版本 5.0 中的新增功能:可在$setWindowFields阶段使用。

如果这些值相等,则返回 true
e 提升到指定的指数。

返回数值表达式的指数移动平均值。

版本 5.0 中的新增功能:可在$setWindowFields阶段使用。

选择数组的子集,以返回仅包含与筛选条件匹配的元素的数组。

返回每个组的第一个文档的值。仅当文档已排序时才定义顺序。

在版本 5.0 中进行了更改:可在$setWindowFields阶段使用。

返回小于或等于指定数字 最大整数。

定义自定义聚合函数。

4.4 版本新增

从文档中返回指定字段的值。您可以使用 $getField 检索名称中包含句点 (.) 或以美元符号 ($) 开头的字段的值。

如果第一个值大于第二个值,则返回 true
如果第一个值大于等于第二个值,则返回 true
以数字形式返回日期中的小时部分(0 到 23)。
返回第一个表达式的非空结果;或者,如果第一个表达式生成空结果,则返回第二个表达式的结果。Null 结果包含未定义值或缺失字段的情况。接受两个表达式以作为参数。第二个表达式的结果可能为 null。
返回一个布尔值,它可表示指定的值是否在数组中。
搜索数组中出现的指定值,并返回首次出现的数组索引。如果未找到该子字符串,则返回 -1
搜索字符串中出现的子字符串,并返回首次出现的 UTF-8 字节索引。如果未找到该子字符串,则返回 -1
在字符串中搜索子字符串的出现位置,并返回第一次出现时的 UTF-8 码位索引。如果未找到该子字符串,则返回 -1

返回曲线下面积的近似值。

版本 5.0 中的新增功能:可在$setWindowFields阶段使用。

确定操作数是否为数组。返回一个布尔值。
确定表达式能否解析为整数、双精度、小数或长整型。
以 ISO 8601 格式返回工作日数字,范围为 1(星期一)到 7(星期日)。
以 ISO 8601 格式返回周数,范围从 153。周数从 1 开始,即包含一年中第一个星期四的那个星期(星期一到星期日)。
以 ISO 8601 格式返回年份号。一年从第一周的星期一 (ISO 8601) 开始,到最后一周的星期日 (ISO 8601) 结束。

返回每个组的最后一个文档的值。仅当文档已排序时才定义顺序。

在版本 5.0 中进行了更改:可在$setWindowFields阶段使用。

定义要在子表达式范围内使用的变量,并返回这些子表达式的结果。接受已命名的参数。

接受任意数量的参数表达式。

返回一个值而不进行解析。 用于聚合管道可能解释为表达式的值。例如,对以$开头的字符串使用$literal表达式,以避免解析为字段路径(Field Path)。
计算数字的自然对数。
以指定基数计算数字的对数。
计算一个数字以 10 为底的对数。
如果第一个值小于第二个值,则返回 true
如果第一个值小于等于第二个值,则返回 true
删除字符串开头和结尾的空白或指定字符。
对数组的每个元素应用子表达式,并按顺序返回生成值的数组。接受已命名的参数。

返回每个群组的最大表达式值。

在版本 5.0 中进行了更改:可在$setWindowFields阶段使用。

将多个文档合并为一个文档。
访问与聚合操作相关的每个文档的可用元数据。

返回每个群组的最小表达式值。

在版本 5.0 中进行了更改:可在$setWindowFields阶段使用。

以 0 到 999 之间的数字形式返回日期的毫秒数。
返回日期的分钟数(0 到 59)。
返回第一个数字除以第二个数字的余数。接受两个参数表达式。
以 1(一月)到 12(十二月)之间的数字形式返回日期的月份。
将数字相乘以返回乘积。接受任意数量的参数表达式。
如果值相等,则返回 true
返回与参数表达式相反的布尔值。接受单个参数表达式。
将文档转换为表示键值对的文档数组。
任何 表达式的计算结果为 true 时,返回 true。接受任意数量的参数表达式。
将一个数字提升到指定的指数。

返回每组中文档的大量表达式值。

在版本 5.0 中进行了更改:可在$setWindowFields阶段使用。

将值从弧度转换为度数。
返回介于 0 和 1 之间的随机浮点数。
根据用户定义的输入,输出一个包含整数序列的数组。

返回文档相对于其他已排序文档的位置(称为排名)。

版本 5.0 中的新增功能:可在$setWindowFields阶段使用。

将表达式应用于数组中的每个元素,并将它们组合成一个值。
将正则表达式应用于字符串,并返回第一个匹配子字符串的信息。
将正则表达式 (regex) 应用于字符串,并返回有关所有匹配子字符串的信息。
将正则表达式 (regex) 应用于字符串并返回一个布尔值,它可表示是否已找到匹配项。

替换给定输入中匹配字符串的第一个实例。

4.4 版本新增

替换给定输入中匹配字符串的所有实例。

4.4 版本新增

返回元素顺序相反的数组。
将数字四舍五入为整数指定的小数位。
删除字符串结尾的空白或指定字符。
以给定的采样率随机选择文档。虽然每次运行所选文件的确切数量各不相同,但所选数量近似于以文件总数百分比表示的采样率。
以 0 到 60 之间的数字返回日期的秒数(跳秒)。
返回一个集,其中包含出现在第一个集中但未出现在第二个集中的元素; ie 执行 相对补语 第二组相对于第一组的大小。只接受两个参数表达式。
如果输入集具有相同的不同元素,则返回 true。接受两个或多个参数表达式。

添加、更新或删除文档中的指定字段。您可以使用 $setField 添加、更新或删除名称包含句点 (.) 或以美元符号 ($) 开头的字段。

版本 5.0 中的新增功能

返回一个集,其中包含出现在所有输入集中的元素。接受任意数量的参数表达式。
true如果第一个集合的所有元素都出现在第二个集合中(包括第一个集合等于第二个集合的情况),则返回 ;即不是 严格子集 。只接受两个参数表达式。
返回一个集,其中包含出现在任何输入集中的元素。

返回应用于输出中相对于当前文档的指定位置的文档的表达式的值。

版本 5.0 中的新增功能:可在$setWindowFields阶段使用。

返回数组中元素的个数。接受单个表达式作为参数。
返回以弧度为单位测量的某一值的正弦值。
返回以弧度为单位来测量的某一值的双曲正弦值。
返回数组的子集。
根据分隔符将字符串拆分为子字符串。返回子字符串数组。如果在字符串中找不到分隔符,则返回包含原始字符串的数组。
计算平方根。

返回输入值的总体标准偏差。

在版本 5.0 中进行了更改:可在$setWindowFields阶段使用。

返回输入值的样本标准偏差。

在版本 5.0 中进行了更改:可在$setWindowFields阶段使用。

执行不区分大小写的字符串比较并返回:如果两个字符串相等,则返回 0;如果第一个字符串大于第二个字符串,则返回 1;如果第一个字符串小于第二个字符串,则返回 -1
返回字符串中 UTF-8 编码的字节数。
返回字符串中 UTF-8 代码点的数量。
已弃用。使用$substrBytes$substrCP
返回字符串的子串。从字符串中指定的 UTF-8 字节索引(从零开始)处的字符开始,持续指定的字节数。
返回字符串的子串。从字符串中指定 UTF-8 代码点 (CP) 索引(从零开始)处的字符开始,持续指定的代码点数。
返回第一个值减去第二个值后的结果。如果这两个值均为数字,则返回差值。如果这两个值均为日期,则返回以毫秒为单位的差值。如果这两个值一个为日期而另一个为数字(以毫秒为单位),则返回生成的日期。接受两个参数表达式。如果这两个值一个为日期而另一个为数字,请先指定日期参数,因为用数字减去日期没有意义。

返回数值的总和。忽略非数字值。

在版本 5.0 中进行了更改:可在$setWindowFields阶段使用。

对一系列 case 表达式求值。当它找到计算结果为 true 的表达式时,$switch 会执行指定表达式并脱离控制流。
返回以弧度为单位来测量的某一值的正切值。
以弧度为单位返回数值的双曲正切值。
将值转换为布尔值。
将数值转换为日期。
将值转换为 Decimal128。
将值转换为双精度值。
将值转换为整数。
将值转换为长整数。
将值转换为 ObjectId。
将值转换为字符串。
将字符串转换为小写。接受单个参数表达式。
将字符串转换为大写。接受单个参数表达式。
删除字符串开头和结尾的空白或指定字符。
将数字截断为整数指定的小数位。
返回字段的 BSON 数据类型。

从文档中删除指定字段。 $setField的别名,用于删除名称中包含句点 ( . ) 或以美元符号 ( $ ) 开头的字段。

版本 5.0 中的新增功能

以 0(一年中第一个星期日之前的部分周)和 53(闰年)之间的数字形式返回日期的周数。
以数字形式返回日期的年份(例如 2014)。
将两个数组进行合并。

有关管道阶段,请参阅聚合管道阶段。

后退

$unwind

来年

$abs