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, devuelve$toDecimal nulo.

$toDecimal tiene la siguiente sintaxis:

{
$toDecimal: <expression>
}

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

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

{ $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 doble como decimal.

Decimal

No-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 cadena como decimal.

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

No se puede convertir un valor de cadena de un número que 10 "0x6400" no sea base (por ejemplo,)

fecha

Devuelve el número de milisegundos desde la época 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