- Reference >
- Operators >
- Aggregation Pipeline Operators >
- $round (aggregation)
$round (aggregation)¶
On this page
Definition¶
-
$round
¶ New in version 4.2..
$round
rounds a number to a whole integer or to a specified decimal place.$round
has the following syntax:Field Type Description <number>
number Can be any valid expression that resolves to a number. Specifically, the expression must resolve to an integer, double,
decimal
, orlong
.$round
returns an error if the expression resolves to a non-numeric data type.<place>
integer Optional Can be any valid expression that resolves to an integer between -20 and 100, exclusive. e.g.
-20 < place < 100
. Defaults to0
if unspecified.If
<place>
resolves to a positive integer,$round
rounds to<place>
decimal places.For example,
$round : [1234.5678, 2]
rounds to two decimal places and returns1234.57
.If
<place>
resolves to a negative integer,$round
rounds using the digit<place>
to the left of the decimal.For example,
$round : [1234.5678, -2]
uses the 2nd digit to the left of the decimal (3
) and returns1200
.If the absolute value of
<place>
equals or exceeds the number of digits to the left of the decimal,$round
returns0
.For example,
$round : [ 1234.5678, -4]
specifies the fourth digit to the left of the decimal. This equals the number of digits left of the decimal and returns0
.If
<place>
resolves to0
,$round
rounds using the first digit to the right of the decimal and returns rounded integer value.For example,
$round : [1234.5678, 0]
returns1234
.
Behavior¶
Rounding to Even Values¶
When rounding on a value of 5
, $round
rounds to the
nearest even value. For example, consider the following sample
documents:
$round : [ "$value", 0]
returns the following:
The value 10.5
is closest to the even value 10
, while the values
11.5
and 12.5
are closest to the even value 12
. Rounding to
the nearest even value supports more even distribution of rounded data
than always rounding up or down.
Returned Data Type¶
If rounding to a specific decimal place, the data type returned by
$round
matches the data type of the input expression or
value.
If rounding to a whole integer value, $round
returns
the value as an integer.
null
, NaN
, and +/- Infinity
¶
- If the first argument resolves to a value of
null
or refers to a field that is missing,$round
returnsnull
. - If the first argument resolves to
NaN
,$round
returnsNaN
. - If the first argument resolves to negative or positive infinity,
$round
returns negative or positive infinity respectively.
Example | Results |
---|---|
{ $round: [ NaN, 1] } |
NaN |
{ $round: [ null, 1] } |
null |
{ $round : [ Infinity, 1 ] } |
Infinity |
{ $round : [ -Infinity, 1 ] } |
-Infinity |
Example¶
A collection named samples
contains the following documents:
The following aggregation returns
value
rounded to the first decimal place:The operation returns the following results:
The following aggregation returns
value
rounded using the first digit to the left of the decimal:The operation returns the following results:
The following aggregation returns
value
rounded to the whole integer:The operation returns the following results: