Docs Menu
Docs Home
/ /

$toInt (operador de expresión)

$toInt

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

$toInt tiene la siguiente sintaxis:

{
$toInt: <expression>
}

El toma cualquier valor $toInt válido expresión.

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

{ $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 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 "-5"por"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,,)

La siguiente tabla enumera algunos ejemplos de conversión a números 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 detecta un error, la operación de agregación se detiene y genera un error. Para anular este comportamiento,$convert utilice.

Volver

$toHashedIndexKey

En esta página