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

$toDecimal (operador de expresión)

$toDecimal

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

$toDecimal tiene la siguiente sintaxis:

{
$toDecimal: <expression>
}

El $toDecimal acepta cualquier 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 string debe ser de un valor numérico de base 10 (p. ej., "-5.5", "123456").

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 decimal:

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 a decimal y el qty a 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 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

$toDate

En esta página