Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
L’opérateur $mul multiplie la valeur d’un champ par un nombre spécifié. Si le champ n’existe pas, $mul crée le champ et le définit sur zéro. Cet opérateur est utile pour appliquer des modifications de pourcentage, des valeurs de mise à l’échelle ou effectuer des calculs en bloc sur des champs numériques.
Syntaxe
{
$mul: {
<field1>: <number1>,
<field2>: <number2>,
...
}
}
Paramètres
| Paramètre | Descriptif |
|---|---|
field |
Nom du champ à multiplier. |
number |
Nombre à multiplier par la valeur du champ. Doit être une valeur numérique. |
Examples
Considérez cet exemple de document de la collection des magasins.
{
"_id": "0fcc0bf0-ed18-4ab8-b558-9848e18058f4",
"name": "First Up Consultants | Beverage Shop - Satterfieldmouth",
"location": {
"lat": -89.2384,
"lon": -46.4012
},
"staff": {
"totalStaff": {
"fullTime": 8,
"partTime": 20
}
},
"sales": {
"totalSales": 75670,
"salesByCategory": [
{
"categoryName": "Wine Accessories",
"totalSales": 34440
},
{
"categoryName": "Bitters",
"totalSales": 39496
},
{
"categoryName": "Rum",
"totalSales": 1734
}
]
},
"promotionEvents": [
{
"eventName": "Unbeatable Bargain Bash",
"promotionalDates": {
"startDate": {
"Year": 2024,
"Month": 6,
"Day": 23
},
"endDate": {
"Year": 2024,
"Month": 7,
"Day": 2
}
},
"discounts": [
{
"categoryName": "Whiskey",
"discountPercentage": 7
},
{
"categoryName": "Bitters",
"discountPercentage": 15
},
{
"categoryName": "Brandy",
"discountPercentage": 8
},
{
"categoryName": "Sports Drinks",
"discountPercentage": 22
},
{
"categoryName": "Vodka",
"discountPercentage": 19
}
]
},
{
"eventName": "Steal of a Deal Days",
"promotionalDates": {
"startDate": {
"Year": 2024,
"Month": 9,
"Day": 21
},
"endDate": {
"Year": 2024,
"Month": 9,
"Day": 29
}
},
"discounts": [
{
"categoryName": "Organic Wine",
"discountPercentage": 19
},
{
"categoryName": "White Wine",
"discountPercentage": 20
},
{
"categoryName": "Sparkling Wine",
"discountPercentage": 19
},
{
"categoryName": "Whiskey",
"discountPercentage": 17
},
{
"categoryName": "Vodka",
"discountPercentage": 23
}
]
}
]
}
Exemple 1 : Application d’une augmentation de pourcentage
Appliquez une augmentation de 10% au total des ventes (multipliée par 1,1). Cela passera totalSales de 24863 à 27349.3 (24863 × 1.1).
db.stores.updateOne(
{ "_id": "438db151-04b8-4422-aa97-acf94bc69cfc" },
{
$mul: {
"sales.totalSales": 1.1
}
}
)
Exemple 2 : Application d’une remise
Appliquez une remise de 20% aux chiffres de vente (multipliez par 0,8).
db.stores.updateOne(
{ "_id": "438db151-04b8-4422-aa97-acf94bc69cfc" },
{
$mul: {
"sales.totalSales": 0.8
}
}
)
Exemple 3 : Opérations sur plusieurs champs
Appliquez simultanément différents multiplicateurs à plusieurs champs.
db.stores.updateOne(
{ "_id": "438db151-04b8-4422-aa97-acf94bc69cfc" },
{
$mul: {
"staff.totalStaff.fullTime": 1.5,
"staff.totalStaff.partTime": 2,
"sales.totalSales": 1.25
}
}
)
Cela va :
- Passer
fullTimede 8 à 12 (8 × 1,5) - Passer
partTimede 5 à 10 (5 × 2) - Augmenter
totalSalesde 25% (multiplier par 1,25)
Exemple 4 : Création de nouveaux champs
Si un champ n’existe pas, $mul le crée et le définit sur 0.
db.stores.updateOne(
{ "_id": "438db151-04b8-4422-aa97-acf94bc69cfc" },
{
$mul: {
"sales.bonusPoints": 100,
"staff.overtimeHours": 40
}
}
)
Les deux bonusPoints sont overtimeHours créés avec la valeur 0.
Exemple 5 : Utilisation de décimales
Appliquez des multiplicateurs décimaux précis pour les calculs financiers.
db.stores.updateOne(
{ "_id": "438db151-04b8-4422-aa97-acf94bc69cfc" },
{
$mul: {
"sales.totalSales": 0.915
}
}
)
Exemple 6 : Mise à jour des éléments de tableau
Appliquez des multiplicateurs à des éléments spécifiques au sein des tableaux à l’aide d’opérateurs positionnels.
db.stores.updateOne(
{
"_id": "438db151-04b8-4422-aa97-acf94bc69cfc",
"sales.salesByCategory.categoryName": "Direct-Drive Turntables"
},
{
$mul: {
"sales.salesByCategory.$.totalSales": 1.15
}
}
)
Exemple 7 : Valeurs négatives et zéro
Gérez les multiplicateurs négatifs et les valeurs zéro.
db.stores.updateOne(
{ "_id": "438db151-04b8-4422-aa97-acf94bc69cfc" },
{
$mul: {
"sales.totalSales": -1,
"staff.totalStaff.fullTime": 0
}
}
)
Cela va :
- Faire
totalSalesnégatif (utile pour les inversions) - Définir
fullTimesur 0
Après avoir appliqué un multiplicateur de 1,5 au personnel et 1,25 aux ventes, le document sera mis à jour comme suit :
{
"_id": "438db151-04b8-4422-aa97-acf94bc69cfc",
"name": "Fourth Coffee | Turntable Boutique - Tromptown",
"staff": {
"totalStaff": {
"fullTime": 12,
"partTime": 10
},
"overtimeHours": 0
},
"sales": {
"totalSales": 31078.75,
"bonusPoints": 0,
"salesByCategory": [
{
"categoryName": "Direct-Drive Turntables",
"totalSales": 28592.45
}
]
}
}