Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Operator $multiply
menghitung produk ekspresi numerik dan didukung dalam operasi agregasi. Ini adalah alat yang berguna untuk mendapatkan bidang terhitung atau melakukan aritmatika dalam alur agregasi.
Sintaksis
{
$multiply: [ <expression1>, <expression2>, ... ]
}
-
<expression1>
: Ekspresi valid yang diselesaikan ke angka. -
<expression2>
: Ekspresi valid yang diselesaikan ke angka. -
...
: Ekspresi tambahan, masing-masing menyelesaikan ke angka.
Contoh
Contoh 1: Mengalikan bidang dengan konstanta
Contoh ini menunjukkan cara menggandakan fullSales
nilai bidang:
db.collection.aggregate([
{
$project: {
sales: 1,
doubleSales: { $multiply: ["$sales.fullSales", 2] }
}
}
])
Hasilnya mencakup bidang asli sales
dan bidang doubleSales
baru yang dua kali nilai .sales.fullSales
Ini akan menghasilkan output berikut:
[
{ "_id": 1, "sales": { "fullSales": 100 }, "doubleSales": 200 },
{ "_id": 2, "sales": { "fullSales": 250 }, "doubleSales": 500 },
{ "_id": 3, "sales": { "fullSales": 400 }, "doubleSales": 800 }
]
Contoh 2: Menghitung total diskon selama promosi
Contoh ini menghitung total diskon untuk promosi dalam kategori "DJ Turntables":
db.collection.aggregate([
{
$project: {
promotionEvents: 1,
totalDiscount: {
$multiply: [
{ $arrayElemAt: ["$promotionEvents.discounts.discountPercentage", 0] },
"$sales.salesByCategory.totalSales"
]
}
}
}
])
Bidang totalDiscount
diturunkan dengan mengalikan persentase diskon pertama dari promotionEvents
array dengan totalSales
nilai . Ini akan menghasilkan output berikut:
[
{
"_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
}
]
Contoh 3: Area komputasi persegi panjang
Contoh ini menghitung area persegi panjang yang diberikan width
dan height
:
db.collection.aggregate([
{
$project: {
width: 1,
height: 1,
area: { $multiply: ["$dimensions.width", "$dimensions.height"] }
}
}
])
Bidang yang area
dihasilkan adalah produk persegi panjang width
dan height
. Ini akan menghasilkan output berikut:
[
{ "_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 }
]
Keterbatasan
- Operator
$multiply
hanya berfungsi dengan ekspresi numerik. Menggunakannya dengan nilai non-numerik mengakibatkan kesalahan. - Berhati-hatilah terhadap masalah luapan atau presisi saat bekerja dengan sejumlah besar atau aritmatika floating-point.
Konten terkait
- Meninjau opsi untuk Migrasi dari MongoDB ke Azure Cosmos DB untuk MongoDB (vCore)
- Baca selengkapnya tentang Kompatibilitas fitur dengan MongoDB