Docs Menu
Docs Home
/ /

$trunc (agregación)

$trunc

$trunc trunca un número a un entero o a un lugar decimal especificado.

El operador $trunc tiene la siguiente sintaxis:

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

$trunc 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 ambos. Por ejemplo,.0 El valor predeterminado es si no se especifica.

  • Si <place> se convierte en un número entero positivo, $trunc se trunca a <place> decimales.

    Por ejemplo, $trunc : [1234.5678, 2] se trunca a dos decimales y devuelve 1234.56.

  • Si se <place> resuelve en un entero negativo, $trunc reemplaza <place> dígitos a la izquierda del decimal 0 con.

    Por ejemplo, $trunc : [1234.5678, -2] reemplaza dos dígitos a la izquierda del decimal con 0 y devuelve 1200.

  • Si el valor absoluto de <place> excede el número de dígitos a la izquierda del decimal, $trunc 0devuelve.

    Por ejemplo, $trunc : [ 1234.5678, -5] especifica el quinto dígito a la izquierda del decimal. Esto excede el número de dígitos a la izquierda del decimal y devuelve 0.

  • Si se <place> resuelve 0 en, trunca todos los dígitos a la derecha del decimal y devuelve el valor entero$trunc completo.

    Por ejemplo, $trunc : [1234.5678, 0] devuelve 1234

La <number> expresión puede ser cualquier expresión válida siempre que se resuelva en un número. Para más información sobre expresiones, consulte Expresiones.

$trunc no redondea los datos truncados. Para redondear los valores de entrada a un valor específico, utilice la $round expresión.

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

Si imprime un número de punto flotante de doble precisión 4.56 con 20 dígitos después del separador decimal, verá 4.55999999999999960920, que es ligeramente menor que 4.56 y se trunca a 4.55.

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.

  • Si el argumento se resuelve a un valor de null o se refiere a un campo que falta, $trunc devuelve null.

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

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

Ejemplo
Resultados

{ $trunc: [ NaN, 1] }

NaN

{ $trunc: [ null, 1] }

null

{ $trunc : [ Infinity, 1 ] }

Infinity

{ $trunc : [ -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.34 }
]
)
  • La siguiente agregación devuelve value truncado al primer decimal:

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

    La operación devuelve los siguientes resultados:

    { "_id" : 1, "truncatedValue" : 19.2 }
    { "_id" : 2, "truncatedValue" : 28.7 }
    { "_id" : 3, "truncatedValue" : 34.3 }
    { "_id" : 4, "truncatedValue" : -45.3 }
  • La siguiente agregación devuelve value truncado al primer lugar:

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

    La operación devuelve los siguientes resultados:

    { "_id" : 1, "truncatedValue" : 10 }
    { "_id" : 2, "truncatedValue" : 20 }
    { "_id" : 3, "truncatedValue" : 30 }
    { "_id" : 4, "truncatedValue" : -40 }
  • La siguiente agregación devuelve ``valor`` truncado al entero completo:

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

    La operación devuelve los siguientes resultados:

    { "_id" : 1, "truncatedValue" : 19 }
    { "_id" : 2, "truncatedValue" : 28 }
    { "_id" : 3, "truncatedValue" : 34 }
    { "_id" : 4, "truncatedValue" : -45 }

Volver

$trim

En esta página