- Reference >
- Operators >
- Aggregation Pipeline Operators >
- $first (aggregation)
$first (aggregation)¶
On this page
Definition¶
-
$first
¶ New in version 4.4.
Returns the first element in an array.
Disambiguation
The following page describes the array element operator
$first
. For the accumulator$first
, available only with the$group
stage, see$first (accumulator)
instead.
See also
Syntax¶
$first
has the following syntax:
The <expression>
can be any valid expression as long as it resolves to an array,
null or missing. For more information on expressions, see
Expressions.
The $first
operator is an alias for the following
$arrayElemAt
expression:
Behavior¶
Valid Operands¶
Valid operand for $first
must resolve to an array,
null, or missing
- If the operand resolves to a non-empty array,
$first
returns the first element in the array: - If the operand resolves to an empty array
[]
,$first
does not return a value. - If the operand is null or missing,
$first
returns null.
For example, create a test collection example1
with the following
documents:
Then, the following adds a new field firstElem
whose value is
derived from applying the $first
operator to the x
field:
The operator returns the following documents:
Invalid Operands¶
If the operand does not resolve to an array, null, or missing, the aggregation operation as a whole errors.
For example, create a test collection example2
with the following
documents:
Then, the following aggregation operation returns an error because of
the { "_id" : 2, "x" : 2 }
document:
That is, the operation returns the following:
Example¶
Create a sample collection runninglog
with the following documents:
The following aggregation uses the $first
and
$last
operator on the log
array to retrieve the
information for the first run and the last run:
The operation returns the following results:
To calculate the change between the first and the last distances, the
following operation uses $cond
and $size
operators to calculate the difference (i.e. $subtract
)
the two distances if there are two or more elements in the log
array:
The operation returns the following documents:
By default, the shell
uses the 64-bit floating-point
double for numbers. To improve precision, you can use NumberDecimal
instead.