Definición
$toIntConvierte un valor en un entero. Si el valor no se puede convertir a un entero,
$toInterrores. Si el valor es nulo o falta, devuelve$toIntnulo.$toInttiene la siguiente sintaxis:{ $toInt: <expression> } El toma cualquier valor
$toIntválido expresión.$toIntes una abreviatura de la siguiente$convertexpresión:{ $convert: { input: <expression>, to: "int" } } Tip
Comportamiento
La siguiente tabla enumera los tipos de entrada que se pueden convertir a un número entero:
Tipo de entrada | Comportamiento |
|---|---|
Booleano | Returns 0 for false.Returns 1 for true. |
Double | Retorna un valor truncado. El valor doble truncado debe estar dentro del valor mínimo y máximo de un entero. No se puede convertir un valor doble cuyo valor truncado sea menor que el valor entero mínimo o mayor que el valor entero máximo. |
Decimal | Retorna un valor truncado. El valor decimal truncado debe estar dentro del valor mínimo y máximo de un número entero. No se puede convertir un valor decimal cuyo valor truncado sea menor que el valor entero mínimo o mayor que el valor entero máximo. |
entero | No-op. Devuelve el valor entero. |
Long | Devuelve el valor largo como un entero. El valor largo debe estar dentro del valor mínimo y máximo para un entero. No se puede convertir un valor largo que sea menor que el valor entero mínimo o mayor que el valor entero máximo. |
String | Devuelve el valor numérico de la cadena como un entero. El valor de la cadena debe ser un entero base;10 No se puede convertir un valor de cadena de un número flotante, decimal o no base (por 10 |
La siguiente tabla enumera algunos ejemplos de conversión a números enteros:
Ejemplo | Resultados |
|---|---|
| 1 |
| 0 |
| 1 |
| 5 |
| Error |
| 5000 |
| Error |
| -2 |
| Error |
| nulo |
Ejemplo
Cree una colección orders con los siguientes documentos:
db.orders.insertMany( [ { _id: 1, item: "apple", qty: "5", price: 10 }, { _id: 2, item: "pie", qty: "10", price: Decimal128("20.0") }, { _id: 3, item: "ice cream", qty: "2", price: "4.99" }, { _id: 4, item: "almonds" , qty: "5", price: 5 } ] )
La siguiente operación de agregación:
convierte
qtyen un entero,convierte
pricea un decimal,calcula el precio total:
// Define stage to add convertedPrice and convertedQty fields with the converted price and qty values priceQtyConversionStage = { $addFields: { convertedPrice: { $toDecimal: "$price" }, convertedQty: { $toInt: "$qty" }, } }; // Define stage to calculate total price by multiplying convertedPrice and convertedQty fields totalPriceCalculationStage = { $project: { item: 1, totalPrice: { $multiply: [ "$convertedPrice", "$convertedQty" ] } } }; db.orders.aggregate( [ priceQtyConversionStage, totalPriceCalculationStage ] )
La operación devuelve los siguientes documentos:
{ _id: 1, item: 'apple', totalPrice: Decimal128("50") }, { _id: 2, item: 'pie', totalPrice: Decimal128("200.0") }, { _id: 3, item: 'ice cream', totalPrice: Decimal128("9.98") }, { _id: 4, item: 'almonds', totalPrice: Decimal128("25") }
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.