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

$round (operador de expressão)

$round

$round rounds a number to a whole integer or to a specified decimal place.

$round tem a seguinte sintaxe:

{ $round : [ <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.

$round 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, exclusivamente. por exemplo: -20 < place < 100. O padrão é 0 se não for especificado.

  • If <place> resolves to a positive integer, $round rounds to <place> decimal places.

    Por exemplo, $round : [1234.5678, 2] arredonda para duas casas decimais e retorna um 1234.57.

  • If <place> resolves to a negative integer, $round rounds using the digit <place> to the left of the decimal.

    Por exemplo, $round : [1234.5678, -2] usa o segundo dígito à esquerda do decimal (3) e retorna 1200.

    If the absolute value of <place> equals or exceeds the number of digits to the left of the decimal, $round returns 0.

    Por exemplo, $round : [ 1234.5678, -4] especifica o quarto dígito à esquerda do decimal. Isso equivale ao número de dígitos restantes do decimal e retorna 0.

  • If <place> resolves to 0, $round rounds using the first digit to the right of the decimal and returns rounded integer value.

    Por exemplo, $round : [1234.5678, 0] gera 1235.

When rounding on a value of 5, $round rounds to the nearest even value. For example, consider the following sample documents:

{_id : 1, "value" : 10.5},
{_id : 2, "value" : 11.5},
{_id : 3, "value" : 12.5},
{_id : 4, "value" : 13.5}

$round : [ "$value", 0] retorna o seguinte:

{_id : 1, "value" : 10},
{_id : 2, "value" : 12},
{_id : 3, "value" : 12},
{_id : 4, "value" : 14}

O valor 10.5 é mais próximo do valor par 10, enquanto os valores 11.5 e 12.5 são mais próximos do valor par 12. O arredondamento para o valor par mais próximo suporta uma distribuição mais uniforme dos dados arredondados do que sempre o arredondamento para cima ou para baixo.

Se você imprimir um número de ponto flutuante de precisão dupla 0.05 com 20 dígitos após o separador decimal, verá 0.05000000000000000278, que é um pouco maior que 0.05 e arredondado para 0.1.

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.

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

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

  • If the first argument resolves to NaN, $round returns NaN.

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

Exemplo
Resultados

{ $round: [ NaN, 1] }

NaN

{ $round: [ null, 1] }

null

{ $round : [ Infinity, 1 ] }

Infinity

{ $round : [ -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.39 }
]
)
  • A seguinte agregação retorna value arredondado para a primeira casa decimal:

    db.samples.aggregate([
    { $project: { roundedValue: { $round: [ "$value", 1 ] } } }
    ])

    A operação retorna os seguintes resultados:

    { "_id" : 1, "roundedValue" : 19.2 }
    { "_id" : 2, "roundedValue" : 28.7 }
    { "_id" : 3, "roundedValue" : 34.3 }
    { "_id" : 4, "roundedValue" : -45.4 }
  • A seguinte agregação retorna value arredondado usando o primeiro dígito à esquerda do decimal:

    db.samples.aggregate([
    { $project: { roundedValue: { $round: [ "$value", -1 ] } } }
    ])

    A operação retorna os seguintes resultados:

    { "_id" : 1, "roundedValue" : 10 }
    { "_id" : 2, "roundedValue" : 20 }
    { "_id" : 3, "roundedValue" : 30 }
    { "_id" : 4, "roundedValue" : -50 }
  • A seguinte agregação retorna value arredondado para todo o inteiro:

    db.samples.aggregate([
    { $project: { roundedValue: { $round: [ "$value", 0 ] } } }
    ])

    A operação retorna os seguintes resultados:

    { "_id" : 1, "roundedValue" : 19 }
    { "_id" : 2, "roundedValue" : 29 }
    { "_id" : 3, "roundedValue" : 34 }
    { "_id" : 4, "roundedValue" : -45 }
Avalie esta página