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

$toInt (operador de expresión)

$toInt

Convierte un valor en un número entero. Si el valor no se puede convertir a un número entero, $toInt errores. Si el valor es nulo o falta, $toInt devuelve nulo.

$toInt tiene la siguiente sintaxis:

{
$toInt: <expression>
}

El $toInt acepta cualquier expresión.

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

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

Tip

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 double truncado debe estar dentro del valor mínimo y máximo para un número entero.

No se puede convertir un valor double cuyo valor truncado sea inferior al valor entero mínimo o superior al valor entero máximo.

Decimal

Retorna un valor truncado.

El valor decimal truncado debe encontrarse dentro del valor mínimo y máximo de un entero.

No puedes convertir un valor decimal cuyo valor truncado sea menor que el valor entero mínimo o mayor que el valor entero máximo.

entero

Sin operación. 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 del string como un entero.

El valor de la string debe ser un número entero en 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")

Tip

Para convertir cadenas en bases distintas de 10, use $convert con la opción base.

En la siguiente tabla se enumeran algunos ejemplos de conversión a enteros:

Ejemplo
Resultados

$toInt: true

1

$toInt: false

0

$toInt: 1.99999

1

$toInt: Decimal128("5.5000")

5

$toInt: Decimal128("9223372036000.000")

Error

$toInt: Long("5000")

5000

$toInt: Long("922337203600")

Error

$toInt: "-2"

-2

$toInt: "2.5"

Error

$toInt: null

Nulo

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 qty en un entero,

  • convierte price a 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 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

$toHashedIndexKey

En esta página