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

$toLong (agregación)

$toLong

Convierte un valor a un long. Si el valor no se puede convertir a un long, $toLong genera errores. Si el valor es null o falta, $toLong devuelve null.

$toLong tiene la siguiente sintaxis:

{
$toLong: <expression>
}

El $toLong acepta cualquier expresión.

El $toLong es una abreviatura de la siguiente expresión $convert:

{ $convert: { input: <expression>, to: "long" } }

Tip

La siguiente tabla enumera los tipos de entrada que se pueden convertir a decimal:

La siguiente tabla enumera los tipos de entrada que pueden convertirse a un "long":

Tipo de entrada
Comportamiento

Booleano

Returns Long(0) for false.
Returns Long(1) for true.

Double

Retorna un valor truncado.

El valor double truncado debe estar dentro del valor mínimo y máximo para un largo.

No se puede convertir un valor double cuyo valor truncado es inferior al valor mínimo de long o superior al valor máximo de long.

Decimal

Retorna un valor truncado.

El valor decimal truncado debe estar dentro del valor mínimo y máximo para un entero largo.

No puedes convertir un valor decimal cuyo valor truncado sea inferior al valor mínimo de long o supere el valor máximo de long.

entero

Devuelve el valor int como un long.

Long

No-op. Devuelve el valor long.

String

Devuelve el valor numérico de la string.

El valor de la string debe ser un long de base 10 (por ejemplo, "-5", "123456").

No puede convertir un valor de string de un número flotante, decimal o que no sea de base 10 (p. ej., "-5.0", "0x6400")

fecha

Convierte la fecha en el número de milisegundos transcurridos desde la Unix epoch.

La siguiente tabla muestra algunos ejemplos de conversión a long:

Ejemplo
Resultados

{ $toLong: true }

Long("1")

{ $toLong: false }

Long("0")

{ $toLong: 1.99999 }

Long("1")

{ $toLong: Decimal128("5.5000") }

Prolongado ("5")

{ $toLong: Decimal128("9223372036854775808.0") }

Error

{ $toLong: Int32(8) }

Long(8)

{ $toLong: ISODate("2018-03-26T04:38:28.044Z") }

Long("1522039108044")

{ $toLong: "-2" }

large("-2")

{ $toLong: "2.5" }

Error

{ $toLong: null }

Nulo

Cree una colección orders con los siguientes documentos:

db.orders.insertMany( [
{ _id: 1, item: "apple", qty: Int32(5) },
{ _id: 2, item: "pie", qty: "100" },
{ _id: 3, item: "ice cream", qty: Long("500") },
{ _id: 4, item: "almonds", qty: "50" },
] )

La siguiente operación de agregación en la colección orders convierte el qty a long antes de ordenar por el valor:

// Define stage to add convertedQty field with converted qty value
qtyConversionStage = {
$addFields: {
convertedQty: { $toLong: "$qty" }
}
};
// Define stage to sort documents by the converted qty values
sortStage = {
$sort: { "convertedQty": -1 }
};
db.orders.aggregate( [
qtyConversionStage,
sortStage
])

La operación devuelve los siguientes documentos:

{ _id: 3, item: 'ice cream', qty: Long("500"), convertedQty: Long("500") },
{ _id: 2, item: 'pie', qty: '100', convertedQty: Long("100") },
{ _id: 4, item: 'almonds', qty: '50', convertedQty: Long("50") },
{ _id: 1, item: 'apple', qty: 5, convertedQty: Long("5") }

Nota

Si la operación de conversión encuentra un error, la operación de agregación se detiene y genera un error. Para anular este comportamiento, use $convert en su lugar.

Volver

$toInt

En esta página