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
/ /

$toDecimal (operador de expresión)

$toDecimal

Convierte un valor a decimal. Si el valor no se puede convertir a decimal, $toDecimal errores. Si el valor es nulo o falta, $toDecimal devuelve nulo.

$toDecimal tiene la siguiente sintaxis:

{
$toDecimal: <expression>
}

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

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

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

Tip

La siguiente tabla enumera los tipos de entrada que se pueden convertir a decimal:

Tipo de entrada
Comportamiento

Booleano

Returns Decimal128("0") for false.
Returns Decimal128("1") for true.

Double

Devuelve el valor double como un decimal.

Decimal

Sin-op. Devuelve el decimal.

entero

Devuelve el valor int como decimal.

Long

Devuelve el valor largo como decimal.

String

Devuelve el valor numérico de la string como un número decimal.

El valor de la cadena debe ser un valor numérico base 10 (por "-5.5" "123456"ejemplo,,).

No puedes convertir un valor de string de un número que no sea de 10 como base (por ejemplo, "0x6400")

fecha

Devuelve la cantidad de milisegundos desde la Unix epoch que corresponde al valor de la fecha.

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

Ejemplo
Resultados

{$toDecimal: true}

Decimal128("1")

{$toDecimal: false}

Decimal128("0")

{$toDecimal: 2.5}

Decimal128("2.50000000000000")

{$toDecimal: Int32(5)}

Decimal128("5")

{$toDecimal: Long(10000)}

Decimal128("10000")

{$toDecimal: "-5.5"}

Decimal128("-5.5")

{$toDecimal: ISODate("2018-03-27T05:04:47.890Z")}

Decimal128("1522127087890")

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 en la colección orders convierte el price en un decimal y el qty en un entero antes de calcular 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

$toDate

En esta página