$multiply (espressione di aggregazione)
L'operatore $multiply
calcola il prodotto di espressioni numeriche ed è supportato nelle operazioni di aggregazione. Si tratta di uno strumento utile per derivare campi calcolati o eseguire operazioni aritmetiche all'interno delle pipeline di aggregazione.
Sintassi
{
$multiply: [ <expression1>, <expression2>, ... ]
}
-
<expression1>
: espressione valida che viene risolta in un numero. -
<expression2>
: espressione valida che viene risolta in un numero. -
...
: espressioni aggiuntive, ognuna delle quali viene risolta in un numero.
Esempio
Esempio 1: Moltiplicare un campo per una costante
In questo esempio viene illustrato come raddoppiare il valore del fullSales
campo:
db.collection.aggregate([
{
$project: {
sales: 1,
doubleSales: { $multiply: ["$sales.fullSales", 2] }
}
}
])
Il risultato include il campo originale sales
e un nuovo campo doubleSales
che è due volte il valore di sales.fullSales
. Produrrà l'output seguente:
[
{ "_id": 1, "sales": { "fullSales": 100 }, "doubleSales": 200 },
{ "_id": 2, "sales": { "fullSales": 250 }, "doubleSales": 500 },
{ "_id": 3, "sales": { "fullSales": 400 }, "doubleSales": 800 }
]
Esempio 2: Calcolare gli sconti totali durante una promozione
In questo esempio viene calcolato lo sconto totale per una promozione nella categoria "DJ Turntables":
db.collection.aggregate([
{
$project: {
promotionEvents: 1,
totalDiscount: {
$multiply: [
{ $arrayElemAt: ["$promotionEvents.discounts.discountPercentage", 0] },
"$sales.salesByCategory.totalSales"
]
}
}
}
])
Il totalDiscount
campo viene derivato moltiplicando la prima percentuale di sconto dalla promotionEvents
matrice con il totalSales
valore . Produrrà l'output seguente:
[
{
"_id": 4,
"promotionEvents": {
"discounts": [{ "discountPercentage": 0.10 }]
},
"sales": { "salesByCategory": { "totalSales": 5000 } },
"totalDiscount": 500
},
{
"_id": 5,
"promotionEvents": {
"discounts": [{ "discountPercentage": 0.15 }]
},
"sales": { "salesByCategory": { "totalSales": 10000 } },
"totalDiscount": 1500
}
]
Esempio 3: Area di calcolo di un rettangolo
In questo esempio viene calcolata l'area di un rettangolo in base a width
e height
:
db.collection.aggregate([
{
$project: {
width: 1,
height: 1,
area: { $multiply: ["$dimensions.width", "$dimensions.height"] }
}
}
])
Il campo risultante area
è il prodotto del rettangolo width
e height
. Produrrà l'output seguente:
[
{ "_id": 6, "dimensions": { "width": 5, "height": 10 }, "area": 50 },
{ "_id": 7, "dimensions": { "width": 8, "height": 12 }, "area": 96 },
{ "_id": 8, "dimensions": { "width": 3, "height": 7 }, "area": 21 }
]
Limiti
- L'operatore
$multiply
funziona solo con espressioni numeriche. L'uso con valori non numerici genera un errore. - Prestare attenzione a problemi di overflow o precisione quando si lavora con numeri elevati o aritmetica a virgola mobile.
Contenuto correlato
- Revisionare le opzioni per eseguire la migrazione da MongoDB ad Azure Cosmos DB per MongoDB (vCore)
- Maggiori informazioni sulla compatibilità delle funzionalità con MongoDB