Aggregation expressions can use both user-defined and system variables.
Variables can hold any BSON type data.
To access the value of the variable, prefix the variable name with
double dollar signs ($$); i.e. "$$<variable>".
If the variable references an object, to access a specific field in the
object, use the dot notation; i.e. "$$<variable>.<field>".
User Variables
User variable names can contain the ascii characters [_a-zA-Z0-9]
and any non-ascii character.
User variable names must begin with a lowercase ascii letter [a-z]
or a non-ascii character.
System Variables
MongoDB offers the following system variables:
| Variable | Description | 
|---|---|
| A variable that returns the current datetime value.
 | |
| A variable that returns the current timestamp value. 
 
 | |
| References the root document, i.e. the top-level document, currently being processed in the aggregation pipeline stage. | |
| References the start of the field path being processed in the
aggregation pipeline stage. Unless documented otherwise, all
stages start with  
 | |
| A variable which evaluates to the missing value. Allows for the
exclusion of fields in  For examples that use  | |
| One of the allowed results of a  | |
| One of the allowed results of a  | |
| One of the allowed results of a  | |
| A variable that stores the metadata results of an Atlas
Search query. In all supported aggregation
pipeline stages, a field set to the variable
 For an example of its usage, see MongoDB Search facet and count. | |
| Returns the roles assigned to the current user. For use cases that include  Using the  New in version 7.0. |