$trunc (agregação)
Nesta página
Definição
$trunc
$trunc
trunca um número para um número inteiro ou para uma casa decimal especificada.
Sintaxe
O operador $trunc
tem a seguinte sintaxe:
{ $trunc : [ <number>, <place> ] }
Campo | Tipo | Descrição |
---|---|---|
<number> | número | |
<place> | inteiro | Opcional Pode ser qualquer expressão válida que resulte em um número inteiro entre -20 e 100, exclusive. Por exemplo,
|
A expressão <number>
pode ser qualquer expressão válida, desde que seja resolvida como um número. Para mais informações sobre expressões, consulte Expressões.
Comportamento
$trunc
não arredonda os dados truncados. Para arredondar valores de entrada para um local especificado, utilize a expressão $round
.
Tipo de dados retornados
O tipo de dados retornado corresponde ao tipo de dados da expressão ou valor de entrada.
null
, NaN
e +/- Infinity
Se o argumento for resolvido para um valor de
null
ou se referir a um campo ausente,$trunc
retornaránull
.Se o argumento se resolve em
NaN
,$trunc
retornaNaN
.Se o argumento resolver para infinito negativo ou positivo,
$trunc
retornará infinito negativo ou positivo respectivamente.
Exemplo | Resultados |
---|---|
{ $trunc: [ NaN, 1] } | NaN |
{ $trunc: [ null, 1] } | null |
{ $trunc : [ Infinity, 1 ] } | Infinity |
{ $trunc : [ -Infinity, 1 ] } | -Infinity |
Exemplo
Crie uma coleção denominada samples
com os seguintes documentos:
db.samples.insertMany( [ { _id: 1, value: 19.25 }, { _id: 2, value: 28.73 }, { _id: 3, value: 34.32 }, { _id: 4, value: -45.34 } ] )
A seguinte aggregation retorna
value
truncado para a primeira casa decimal:db.samples.aggregate([ { $project: { truncatedValue: { $trunc: [ "$value", 1 ] } } } ]) A operação retorna os seguintes resultados:
{ "_id" : 1, "truncatedValue" : 19.2 } { "_id" : 2, "truncatedValue" : 28.7 } { "_id" : 3, "truncatedValue" : 34.3 } { "_id" : 4, "truncatedValue" : -45.3 } A seguinte aggregation retorna
value
truncado para o primeiro lugar:db.samples.aggregate([ { $project: { truncatedValue: { $trunc: [ "$value", -1 ] } } } ]) A operação retorna os seguintes resultados:
{ "_id" : 1, "truncatedValue" : 10 } { "_id" : 2, "truncatedValue" : 20 } { "_id" : 3, "truncatedValue" : 30 } { "_id" : 4, "truncatedValue" : -40 } A seguinte aggregation retorna ''valor'' truncado para todo o inteiro:
db.samples.aggregate([ { $project: { truncatedValue: { $trunc: [ "$value", 0 ] } } } ]) A operação retorna os seguintes resultados:
{ "_id" : 1, "truncatedValue" : 19 } { "_id" : 2, "truncatedValue" : 28 } { "_id" : 3, "truncatedValue" : 34 } { "_id" : 4, "truncatedValue" : -45 }