Docs Menu
Docs Home
/ /
Operadores de tuberías de agregación

$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 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