Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
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 toma cualquier valor $toLong válido 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 opera. Devuelve el valor largo.

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 se puede convertir un valor de cadena de un número flotante, decimal o que no sea de base 10 (por "-5.0" ejemplo,,). "0x6400"

fecha

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

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

Ejemplo
Resultados

{ $toLong: true }

Long("1")

{ $toLong: false }

Largo("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 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