Docs 菜单

Docs 主页开发应用程序MongoDB Manual

聚合表达式中的变量

在此页面上

  • 用户变量
  • 系统变量

聚合表达式可以同时使用用户定义变量和系统变量。

变量可以保存任何BSON 类型的数据。要访问变量的值,请在变量名称前加上双美元符号 ($$);即"$$<variable>"

如果该变量引用了一个对象,那么,要访问该对象中的特定字段,请使用点符号;即 "$$<variable>.<field>"

用户变量名称可包含 ASCII 字符 [_a-zA-Z0-9] 和任意非 ASCII 字符。

用户变量名称必须以小写 ascii 字母 [a-z] 或非 ascii 字符开头。

MongoDB 提供以下系统变量:

变量
说明
NOW

返回当前日期时间值的变量。 NOW会为部署的所有成员返回相同的值,并在聚合管道的所有阶段保持不变。

4.2 版本中的新增功能

CLUSTER_TIME

返回当前时间戳值的变量。

CLUSTER_TIME 仅适用于副本集和分片集群。

CLUSTER_TIME 会为部署的所有节点返回同一值,并在管道的所有阶段保持不变。

4.2 版本中的新增功能

ROOT
引用根文档,即当前正在聚合管道阶段处理的顶层文档。
CURRENT

引用聚合管道阶段正在处理的字段路径的起始位置。除非另有说明,否则所有阶段都以CURRENT开头,与ROOT相同。

CURRENT是可修改的。但是,由于$<field>等效于$$CURRENT.<field> ,因此重新绑定CURRENT会更改$访问的含义。

REMOVE

计算结果为缺失值的变量。允许有条件地排除字段。在$project中,设置为变量REMOVE的字段将从输出中排除。

有关其用法的示例,请参阅有条件排除字段

DESCEND
$redact表达式的允许结果之一。
PRUNE
$redact表达式的允许结果之一。
KEEP
$redact表达式的允许结果之一。
SEARCH_META

存储Atlas Search查询元数据结果的变量。在所有支持的聚合管道阶段中,设置为变量$$SEARCH_META的字段会返回查询的元数据结果

有关其用法的示例,请参阅 Atlas Search 组件计数。

USER_ROLES

返回分配给当前用户的角色

有关包含 USER_ROLES 的使用案例,请参阅查找聚合视图updateOneupdateManyfindAndModify 示例。

7.0 版本中的新增功能

提示

另请参阅:

← $zip(聚合)