Menu Docs
Página inicial do Docs
/ /

$trunc (agregação)

$trunc

$trunc trunca um número para um número inteiro ou para uma casa decimal especificada.

O operador $trunc tem a seguinte sintaxe:

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

<number>

número

Pode ser qualquerexpressão válida que resolva um número. Especificamente, a expressão deve ser resolvida para um número inteiro, double, decimal ou 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.

  • Se <place> resolver para um inteiro negativo, $trunc substitui <place> dígitos à esquerda do decimal 0 por.

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

  • Se o valor absoluto de <place> exceder o número de dígitos à esquerda do decimal, $trunc 0retornará.

    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.

  • Se <place> resultar 0 em, trunca todos os dígitos à direita do decimal e retorna o valor$trunc inteiro.

    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 não arredonda os dados truncados. Para arredondar valores de entrada para um local especificado, utilize a expressão $round .

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.

Se você precisar de um número de ponto flutuante para um aplicação que exige alta precisão, considere um Decimal128 valor. Para detalhes, consulte BSON.Decimal.128

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.

  • 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 retorna NaN.

  • 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

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 }

Voltar

$trim

Nesta página