Definición
$toLongConvierte un valor en un valor largo. Si el valor no se puede convertir en un valor largo,
$toLongerrores. Si el valor es nulo o falta, devuelve$toLongnulo.$toLongtiene la siguiente sintaxis:{ $toLong: <expression> } El toma cualquier valor
$toLongválido expresión.$toLonges una abreviatura de la siguiente$convertexpresión:{ $convert: { input: <expression>, to: "long" } } Tip
Comportamiento
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 No se puede convertir un valor de cadena de un número flotante, decimal o no base (por 10 |
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 |
|---|---|
| Largo("1") |
| Largo("0") |
| Largo("1") |
| Largo("5") |
| Error |
| Long(8) |
| Long("1522039108044") |
| Largo("-2") |
| Error |
| nulo |
Ejemplo
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.