聚合管道操作符

注意:

有关特定运算符的详细信息,包括语法和示例,请单击特定运算符以转到其参考页。

表达式运算符

在这个部分

这些表达式运算符可用于构造表达式以在聚合管道阶段中使用。

运算符表达式类似于带有参数的函数。通常,这些表达式采用参数数组并具有以下形式:

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

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

{ <operator>: <argument> }

为了避免在参数是文字数组的情况下解析歧义,必须将文字数组包装在$literal表达式中,或者保留指定参数列表的外部数组。

算术表达式运算符

算术表达式对 numbers 执行数学运算。一些算术表达式也可以支持 date 算术。

列表表达式运算符

布尔表达式运算符

布尔表达式将其参数表达式计算为布尔值,并返回布尔值作为结果。

除了false布尔值,布尔表达式为false如下:null0,和undefined 的值。布尔表达式将所有其他值评估为true,包括非零数字值和数组。

比较表达式运算符

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

比较表达式采用两个参数表达式并比较 value 和 type,使用指定的 BSON 比较顺序表示不同类型的值。

条件表达式运算符

日期表达式运算符

以下运算符返回日期对象或日期对象的组成部分:

以下算术运算符可以使用 date 操作数:

文字表达式运算符

对象表达式运算符

集合表达式运算符

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

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

如果集合包含嵌套的 array 元素,则 set 表达式不会下降到嵌套的 array 中,而是在顶层level 处计算 array。

字符串表达式运算符

字符串表达式(除外 $concat)仅对ASCII字符字符串具有明确定义的行为。

$concat 行为是明确定义的,与所使用的字符无关。

文本表达式运算符

三角表达式运算符

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

类型表达式运算符

累加器($group)

累加器是可以在$group阶段使用的运算符,它们在文档通过管道时保持其状态(例如: 总计,最大值,最小值和相关数据)。

当在$group阶段用作累加器时,这些运算符将单个表达式作为输入,为每个输入文档计算一次表达式,并为共享相同 group key 的 group 文档保持其阶段。

累加器(处于其他阶段)

一些可用作$group阶段累加器的运算符也可用于$project阶段,但不能用作累加器。在$project阶段使用时,这些 operator 不会维护它们的 state,并且可以将单个参数或多个 arguments 作为输入。

更改了 version 3.2.

以下累加器 operators 也可用于$project$addFields$set阶段。

变量表达式运算符

表达式运算符的字母顺序列表

对于管道阶段,请参见聚合管道阶段

译者:李冠飞

校对:

最后更新于