跳到主要内容

系统变量

2025年02月27日
柏拉文
越努力,越幸运

前言


系统变量表达式文档

一、认识


$$<variable> 使用 $$ 来指示系统变量

二、系统变量


2.1 NOW

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

2.2 CLUSTER_TIME

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

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

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

2.3 ROOT

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

2.4 CURRENT

CURRENT 引用聚合管道阶段正在处理的字段路径(Field Path)的起始位置。 除非另有说明,否则所有阶段都以 开头,与 CURRENT ROOT 相同。CURRENT 是可修改的。但是,由于<field> 等效于$CURRENT.<field> ,因此重新绑定 CURRENT 会更改 $ 访问的含义。

$$CURRENT.<field>  等效于 $<field>

2.5 REMOVE

REMOVE 一个求值为缺失值的变量。允许排除 addFieldsaddFields 和 project 阶段的字段。

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

removeFields

有条件地排除字段

2.6 DESCEND

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

2.7 PRUNE

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

2.8 KEEP

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

2.9 SEARCH_META

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

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

2.10 USER_ROLES

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

有关包含 USER_ROLES 的使用案例,请参阅查找、聚合、视图、updateOne、updateMany 和 findAndModify 示例。

7.0 版本中的新增功能。