聚合管道操作符
注意:
有关特定运算符的详细信息,包括语法和示例,请单击特定运算符以转到其参考页。
表达式运算符
在这个部分
运算符表达式类似于带有参数的函数。通常,这些表达式采用参数数组并具有以下形式:
如果 operator 接受单个参数,可以省略指定参数列表的外部数组:
为了避免在参数是文字数组的情况下解析歧义,必须将文字数组包装在$literal
表达式中,或者保留指定参数列表的外部数组。
算术表达式运算符
算术表达式对 numbers 执行数学运算。一些算术表达式也可以支持 date 算术。
列表表达式运算符
布尔表达式运算符
布尔表达式将其参数表达式计算为布尔值,并返回布尔值作为结果。
除了false
布尔值,布尔表达式为false
如下:null
,0
,和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阶段。
变量表达式运算符
表达式运算符的字母顺序列表
对于管道阶段,请参见聚合管道阶段。
译者:李冠飞
校对:
最后更新于