Menu Docs
Página inicial do Docs
/
Manual do MongoDB
/ / /

$round (agregação)

Nesta página

  • Definição
  • Comportamento
  • Exemplo
$round

$round arredonda um número para um número inteiro ou para uma casa decimal especificada.

$round tem a seguinte sintaxe:

{ $round : [ <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, duplo, decimal ou 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.

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

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

  • Se <place> produzir um número inteiro negativo, $round arredondará usando o dígito <place> à esquerda do decimal.

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

    Se o valor absoluto de <place> for igual ou superior ao número de dígitos à esquerda do decimal, $round retornará 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.

  • Se <place> resultar em 0, $round arredonda usando o primeiro dígito à direita do decimal e retorna um valor inteiro arredondado.

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

Ao arredondar um valor de 5, $round arredonda para o valor par mais próximo. Por exemplo, considere os seguintes documentos de amostragem:

{_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.

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

  • Se o primeiro argumento for resolvido para um valor de null ou se referir a um campo ausente, $round retornará null.

  • Se o primeiro argumento se resolver em NaN, $round retornará NaN.

  • Se o primeiro argumento resultar em um infinito negativo ou positivo, $round retornará respectivamente um infinito negativo ou positivo.

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 }
← $reverseArray (agregação)