Para agentes de IA: um índice de documentação está disponível em https://www.mongodb.com/pt-br/docs/llms.txt — as versões de markdown de todas as páginas estão disponíveis anexando .md a qualquer caminho de URL.
Menu Docs

$trunc (operador de expressão )

$trunc

$trunc truncates a number to a whole integer or to a specified decimal place.

O operador $trunc tem a seguinte sintaxe:

{ $trunc : [ <number>, <place> ] }
Campo
Tipo
Descrição

<number>

número

Pode ser qualquer expressão válida que resolva um número. Especificamente, a expressão deve ser resolvida para um número inteiro, double, decimalou long.

$trunc retorna um erro se a expressão for resolvida para um tipo de dados não numéricos.

<place>

inteiro

Opcional Pode ser qualquer expressão válida que resulte em um número inteiro entre -20 e 100, exclusive. Por exemplo, -20 < place < 100. O padrão é 0 se não for especificado.

  • Se <place> for resolvido em um número inteiro positivo, $trunc será truncado em <place> casas decimais.

    Por exemplo, $trunc : [1234.5678, 2] trunca para duas casas decimais e retorna 1234.56.

  • If <place> resolves to a negative integer, $trunc replaces <place> digits left of the decimal with 0.

    Por exemplo, $trunc : [1234.5678, -2] substitui para dois dígitos restantes do decimal por 0 e retorna 1200.

  • If the absolute value of <place> exceeds the number of digits to the left of the decimal, $trunc returns 0.

    Por exemplo, $trunc : [ 1234.5678, -5] especifica o quinto dígito restante do decimal. Isto excede o número de dígitos restantes do decimal e retorna 0.

  • If <place> resolves to 0, $trunc truncates all digits to the right of the decimal and returns the whole integer value.

    Por exemplo, $trunc : [1234.5678, 0] gera 1234

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.

$trunc does not round the truncated data. To round input values to a specified place, use the $round expression.

O tipo de dados retornado corresponde ao tipo de dados da expressão ou valor de entrada.

Se você imprimir um número de ponto flutuante de precisão dupla 4.56 com 20 dígitos após o separador decimal, verá 4.55999999999999960920, que é um pouco menor que 4.56 e é truncado para 4.55.

O MongoDB usa o padrão IEEE 754 para cálculos de ponto flutuante, e o comportamento é consistente com esse padrão.

If you need a floating point number for an application that requires high precison, consider a Decimal128 value. For details, see BSON.Decimal128.

Se você precisar armazenar um valor monetário, considere um número inteiro usando a unidade de denominação monetária mais baixa. Por exemplo, use um número inteiro com centavos em vez de um número de ponto flutuante.

  • If the argument resolves to a value of null or refers to a field that is missing, $trunc returns null.

  • If the argument resolves to NaN, $trunc returns NaN.

  • If the argument resolves to negative or positive infinity, $trunc returns negative or positive infinity respectively.

Exemplo
Resultados

{ $trunc: [ NaN, 1] }

NaN

{ $trunc: [ null, 1] }

null

{ $trunc : [ Infinity, 1 ] }

Infinity

{ $trunc : [ -Infinity, 1 ] }

-Infinity

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 }