$trunc (aggregation)
On this page
Definition
$trunc
$trunc
truncates a number to a whole integer or to a specified decimal place.
Syntax
The $trunc
operator has the following syntax:
{ $trunc : [ <number>, <place> ] }
Field  Type  Description 

<number>  number  Can be any valid expression
that resolves to a number. Specifically, the expression must
resolve to an integer, double,

<place>  integer  Optional Can be any valid expression
that resolves to an integer between 20 and 100, exclusive. For example,

The <number>
expression can be any valid expression as long as it resolves to a number. For
more information on expressions, see Expression Operators.
Behavior
$trunc
does not round the truncated data. To round
input values to a specified place, use the
$round
expression.
Returned Data Type
If truncating to a specific decimal place, the data type returned by
$trunc
matches the data type of the input expression or
value.
If truncating to a whole integer value, $trunc
returns
an integer.
null
, NaN
, and +/ Infinity
If the argument resolves to a value of
null
or refers to a field that is missing,$trunc
returnsnull
.If the argument resolves to
NaN
,$trunc
returnsNaN
.If the argument resolves to negative or positive infinity,
$trunc
returns negative or positive infinity respectively.
Example  Results 

{ $trunc: [ NaN, 1] }  NaN 
{ $trunc: [ null, 1] }  null 
{ $trunc : [ Infinity, 1 ] }  Infinity 
{ $trunc : [ Infinity, 1 ] }  Infinity 
Example
Create a collection named samples
with the following documents:
db.samples.insertMany( [ { _id: 1, value: 19.25 }, { _id: 2, value: 28.73 }, { _id: 3, value: 34.32 }, { _id: 4, value: 45.34 } ] )
The following aggregation returns
value
truncated to the first decimal place:db.samples.aggregate([ { $project: { truncatedValue: { $trunc: [ "$value", 1 ] } } } ]) The operation returns the following results:
{ "_id" : 1, "truncatedValue" : 19.2 } { "_id" : 2, "truncatedValue" : 28.7 } { "_id" : 3, "truncatedValue" : 34.3 } { "_id" : 4, "truncatedValue" : 45.3 } The following aggregation returns
value
truncated to the first place:db.samples.aggregate([ { $project: { truncatedValue: { $trunc: [ "$value", 1 ] } } } ]) The operation returns the following results:
{ "_id" : 1, "truncatedValue" : 10 } { "_id" : 2, "truncatedValue" : 20 } { "_id" : 3, "truncatedValue" : 30 } { "_id" : 4, "truncatedValue" : 40 } The following aggregation returns``value`` truncated to the whole integer:
db.samples.aggregate([ { $project: { truncatedValue: { $trunc: [ "$value", 0 ] } } } ]) The operation returns the following results:
{ "_id" : 1, "truncatedValue" : 19 } { "_id" : 2, "truncatedValue" : 28 } { "_id" : 3, "truncatedValue" : 34 } { "_id" : 4, "truncatedValue" : 45 }