Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
Docs Menu
Docs Home
/ /

$trunc (operador de expresió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 valor válido expresión que resuelve un número. Específicamente, la expresión debe resolverse a un entero, doble, decimal o long.

$trunc devuelve un error si la expresión da como resultado un tipo de dato no numérico.

<place>

entero

Opcional Puede ser cualquier expresión válida que resuelva un número entero entre -20 y 100, exclusivo. Por ejemplo, -20 < place < 100. Por defecto, se establece en 0 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 <place> es un entero negativo, $trunc reemplaza <place> dígitos a la izquierda del punto decimal con 0.

    Por ejemplo, $trunc : [1234.5678, -2] reemplaza a 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 devuelve 0.

    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 <place> se resuelve como 0, $trunc trunca todos los dígitos a la derecha del decimal y devuelve el valor entero completo.

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

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

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

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

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 necesitas un número de punto flotante para una aplicación que requiere alta precisión, considera un valor Decimal128. Para obtener más información, consulte BSON.Decimal128.

Si necesitas almacenar un valor en moneda, considera un número entero utilizando la unidad monetaria de denominación más baja. Por ejemplo, utilice un número entero con céntimos o centavos 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 como NaN, $trunc retorna NaN.

  • Si el argumento se resuelve en menos infinito o más infinito, $trunc devuelve respectivamente menos infinito o más infinito.

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 a la primera posición:

    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 número 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