Docs 菜单
Docs 主页
/
MongoDB Manual
/ /

聚合表达式中的变量

在此页面上

  • 用户变量
  • 系统变量

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

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

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

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

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

MongoDB 提供以下系统变量:

变量
说明
NOW
返回当前日期时间值的变量。NOW 会为部署的所有节点返回同一值,并在聚合管道的所有阶段保持不变。
CLUSTER_TIME

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

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

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

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

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

CURRENT 是可修改的。然而,由于 $<field> 等价于 $$CURRENT.<field>,重新绑定 CURRENT 会改变 $ 访问权限的意义。

REMOVE

一个求值为缺失值的变量。允许排除 $addFields$project 阶段的字段。

有关使用 $$REMOVE 的示例,请参阅:

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

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

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

USER_ROLES

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

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

7.0 版本中的新增功能

提示

另请参阅:

后退

命令比较