系统变量
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
一个求值为缺失值的变量。允许排除 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 版本中的新增功能。