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

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

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

REMOVE

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

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

版本 3.6 中的新增功能

DESCEND

$redact表达式的允许结果之一。

PRUNE

$redact表达式的允许结果之一。

KEEP

$redact表达式的允许结果之一。

提示

另请参阅:

后退

命令比较