Docs Menu
Docs Home
/ /
Operadores de tuberías 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 toma cualquier valor $toLong válido expresión.

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

{ $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 se pueden convertir a largo:

Tipo de entrada
Comportamiento

Booleano

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

Double

Retorna un valor truncado.

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

No se puede convertir un valor doble cuyo valor truncado sea menor que el valor largo mínimo o mayor que el valor largo máximo.

Decimal

Retorna un valor truncado.

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

No se puede convertir un valor decimal cuyo valor truncado sea menor que el valor largo mínimo o mayor que el valor largo máximo.

entero

Devuelve el valor int como un largo.

Long

No opera. Devuelve el valor largo.

String

Devuelve el valor numérico de la cadena.

El valor de la cadena debe tener una longitud base 10 (por"-5" "123456"ejemplo,,).

No se puede convertir un valor de cadena de un número flotante, decimal o no base (por 10 "-5.0" "0x6400"ejemplo,,)

fecha

Convierte la fecha en número de milisegundos desde la época.

La siguiente tabla enumera algunos ejemplos de conversión a largos:

Ejemplo
Resultados

{ $toLong: true }

Largo("1")

{ $toLong: false }

Largo("0")

{ $toLong: 1.99999 }

Largo("1")

{ $toLong: Decimal128("5.5000") }

Largo("5")

{ $toLong: Decimal128("9223372036854775808.0") }

Error

{ $toLong: Int32(8) }

Long(8)

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

Long("1522039108044")

{ $toLong: "-2" }

Largo("-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 qty en largo 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 detecta un error, la operación de agregación se detiene y genera un error. Para anular este comportamiento,$convert utilice.

Volver

$toInt

En esta página