Docs Menu
Docs Home
/ /

$round (agregación)

$round

$round redondea un número a un entero o a un decimal especificado.

$round tiene la siguiente sintaxis:

{ $round : [ <number>, <place> ] }
Campo
Tipo
Descripción

<number>

Número

Puede ser cualquier válido Expresión que se resuelve en un número. Específicamente, la expresión debe resolverse en un entero, un doble, decimal longo.

$round devuelve un error si la expresión se resuelve en un tipo de datos no numérico.

<place>

entero

Opcional Puede ser cualquier expresión válida que se resuelva en un entero entre -20 y,100 -20 < place < 100excluyendo, por 0 ejemplo,. El valor predeterminado es si no se especifica.

  • Si <place> se resuelve en un entero positivo, se redondea$round a <place> decimales.

    Por ejemplo, $round : [1234.5678, 2] se redondea a dos decimales y devuelve 1234.57.

  • Si se <place> resuelve en un entero negativo, se redondea utilizando el$round dígito <place> a la izquierda del decimal.

    Por ejemplo, $round : [1234.5678, -2] utiliza el 2º dígito a la izquierda del decimal (3) y devuelve 1200.

    Si el valor absoluto de es <place> igual o mayor que el número de dígitos a la izquierda del decimal, $round 0devuelve.

    Por ejemplo, $round : [ 1234.5678, -4] especifica el cuarto dígito a la izquierda del decimal. Esto equivale al número de dígitos a la izquierda del decimal y devuelve 0.

  • Si se <place> resuelve 0 en, redondea utilizando el primer dígito a la derecha del decimal y devuelve un valor entero$round redondeado.

    Por ejemplo, $round : [1234.5678, 0] devuelve 1235.

Al redondear un valor de,5 se$round redondea al valor par más cercano. Por ejemplo, considere los siguientes documentos de ejemplo:

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

$round : [ "$value", 0] devuelve lo siguiente:

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

El valor 10.5 es el más cercano al valor par 10, mientras que los valores 11.5 y 12.5 son los más cercanos al valor par 12. Redondear al valor par más cercano facilita una distribución más uniforme de los datos redondeados que redondear siempre hacia arriba o hacia abajo.

Si imprime un número de punto flotante de doble precisión 0.05 con 20 dígitos después del separador decimal, verá 0.05000000000000000278, que es ligeramente mayor que 0.05 y se redondea a 0.1.

MongoDB utiliza el estándar IEEE 754 para operaciones de coma flotante, y el comportamiento es coherente con dicho estándar.

Si necesita un número de punto flotante para una aplicación que requiere alta precisión, considere un Decimal128 valor. Para más detalles, consulte BSON.Decimal.128

Si necesita almacenar un valor monetario, considere usar un entero con la unidad de denominación más baja. Por ejemplo, use un entero con centavos o peniques en lugar de un número de punto flotante.

El tipo de datos devuelto coincide con el tipo de datos de la expresión o valor de entrada.

  • Si el primer argumento se resuelve en un valor de null o hace referencia a un campo que falta, $round nulldevuelve.

  • Si el primer argumento se resuelve NaN en, $round NaNdevuelve.

  • Si el primer argumento se resuelve en infinito negativo o positivo, devuelve infinito negativo o positivo$round respectivamente.

Ejemplo
Resultados

{ $round: [ NaN, 1] }

NaN

{ $round: [ null, 1] }

null

{ $round : [ Infinity, 1 ] }

Infinity

{ $round : [ -Infinity, 1 ] }

-Infinity

Cree una colección llamada samples con los siguientes documentos:

db.samples.insertMany(
[
{ _id: 1, value: 19.25 },
{ _id: 2, value: 28.73 },
{ _id: 3, value: 34.32 },
{ _id: 4, value: -45.39 }
]
)
  • La siguiente agregación devuelve value redondeado al primer decimal:

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

    La operación devuelve los siguientes resultados:

    { "_id" : 1, "roundedValue" : 19.2 }
    { "_id" : 2, "roundedValue" : 28.7 }
    { "_id" : 3, "roundedValue" : 34.3 }
    { "_id" : 4, "roundedValue" : -45.4 }
  • La siguiente agregación devuelve value redondeado utilizando el primer dígito a la izquierda del decimal:

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

    La operación devuelve los siguientes resultados:

    { "_id" : 1, "roundedValue" : 10 }
    { "_id" : 2, "roundedValue" : 20 }
    { "_id" : 3, "roundedValue" : 30 }
    { "_id" : 4, "roundedValue" : -50 }
  • La siguiente agregación devuelve value redondeado al entero completo:

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

    La operación devuelve los siguientes resultados:

    { "_id" : 1, "roundedValue" : 19 }
    { "_id" : 2, "roundedValue" : 29 }
    { "_id" : 3, "roundedValue" : 34 }
    { "_id" : 4, "roundedValue" : -45 }

Volver

$reverseArray

En esta página