Docs Menu
Docs Home
/ /

$multiplicar (agregación)

$multiply

Multiplica números y devuelve el resultado. Pasa los argumentos a $multiply en una matriz.

La expresión $multiply tiene la siguiente sintaxis:

{ $multiply: [ <expression1>, <expression2>, ... ] }

Los argumentos pueden ser cualquier válido. expresión siempre que se resuelvan en números. Para más información sobre expresiones, consulte Expresiones.

A partir de MongoDB 6.1, puede optimizar la operación $multiply. Para mejorar el rendimiento, agrupe las referencias al final de la lista de argumentos. Por ejemplo,

$multiply: [ 1, 2, 3, '$a', '$b', '$c' ]

Cuando se mezclan los tipos de entrada, $multiply promueve el tipo de entrada menor al mayor de los dos. Un tipo se considera mayor cuando representa un rango más amplio de valores. El orden de los tipos numéricos, de menor a mayor, es: entero → largo → doble → decimal

El tipo de entrada mayor también determina el tipo de resultado, a menos que la operación se desborde y salga del rango representado por ese tipo de dato mayor. En casos de desbordamiento, $multiply promueve el resultado según el siguiente orden:

  • Si el tipo de entrada más grande es integer, el tipo de resultado se eleva a long.

  • Si el tipo de entrada más grande es long, el tipo de resultado se eleva a double.

  • Si el tipo mayor es double o decimal, el resultado del desbordamiento se representa como + o - infinito. No hay promoción de tipo del resultado.

Considera una colección sales con los siguientes documentos:

db.sales.insertMany( [
{ _id : 1, "item" : "abc", "price" : 10, "quantity": 2, date: ISODate("2014-03-01T08:00:00Z") },
{ _id : 2, "item" : "jkl", "price" : 20, "quantity": 1, date: ISODate("2014-03-01T09:00:00Z") },
{ _id : 3, "item" : "xyz", "price" : 5, "quantity": 10, date: ISODate("2014-03-15T09:00:00Z") }
] )

La siguiente agregación utiliza la expresión$multiplyen la canalización$projectpara multiplicar los campos price y quantity:

db.sales.aggregate(
[
{ $project: { date: 1, item: 1, total: { $multiply: [ "$price", "$quantity" ] } } }
]
)

La operación devuelve los siguientes resultados:

{ "_id" : 1, "item" : "abc", "date" : ISODate("2014-03-01T08:00:00Z"), "total" : 20 }
{ "_id" : 2, "item" : "jkl", "date" : ISODate("2014-03-01T09:00:00Z"), "total" : 20 }
{ "_id" : 3, "item" : "xyz", "date" : ISODate("2014-03-15T09:00:00Z"), "total" : 50 }

Volver

$month

En esta página