Delen via


$mul (operator voor veldupdate)

TOEPASBAAR OP: MongoDB vCore

De $mul operator vermenigvuldigt de waarde van een veld met een opgegeven getal. Als het veld niet bestaat, $mul maakt u het veld en stelt u het in op nul. Deze operator is handig voor het toepassen van percentagewijzigingen, schaalwaarden of het uitvoeren van bulkberekeningen op numerieke velden.

Syntaxis

De syntaxis voor de $mul operator is als volgt:

{
  $mul: {
    <field1>: <number1>,
    <field2>: <number2>,
    ...
  }
}

Parameterwaarden

Beschrijving
field De naam van het veld dat moet worden vermenigvuldigd.
number Het getal om de veldwaarde te vermenigvuldigen met. Moet een numerieke waarde zijn.

Voorbeeld

Laten we het gebruik begrijpen met voorbeeld-json uit stores de gegevensset.

{
  "_id": "438db151-04b8-4422-aa97-acf94bc69cfc",
  "name": "Fourth Coffee | Turntable Boutique - Tromptown",
  "staff": {
    "totalStaff": {
      "fullTime": 8,
      "partTime": 5
    }
  },
  "sales": {
    "totalSales": 24863,
    "salesByCategory": [
      {
        "categoryName": "Direct-Drive Turntables",
        "totalSales": 24863
      }
    ]
  }
}

Voorbeeld 1: Percentageverhoging toepassen

Pas een toename van 10% toe op de totale verkoop (vermenigvuldigd met 1,1).

db.stores.updateOne(
  { "_id": "438db151-04b8-4422-aa97-acf94bc69cfc" },
  {
    $mul: {
      "sales.totalSales": 1.1
    }
  }
)

Dit verandert totalSales van 24863 in 27349,3 (24863 × 1,1).

Voorbeeld 2: Korting toepassen

Pas een korting van 20% toe op verkoopcijfers (vermenigvuldigd met 0,8).

db.stores.updateOne(
  { "_id": "438db151-04b8-4422-aa97-acf94bc69cfc" },
  {
    $mul: {
      "sales.totalSales": 0.8
    }
  }
)

Voorbeeld 3: Meerdere veldbewerkingen

Verschillende vermenigvuldigers toepassen op meerdere velden tegelijk.

db.stores.updateOne(
  { "_id": "438db151-04b8-4422-aa97-acf94bc69cfc" },
  {
    $mul: {
      "staff.totalStaff.fullTime": 1.5,
      "staff.totalStaff.partTime": 2,
      "sales.totalSales": 1.25
    }
  }
)

Dit doet het volgende:

  • Verhoging fullTime van 8 tot 12 (8 × 1,5)
  • Verhoging partTime van 5 tot 10 (5 × 2)
  • Verhogen totalSales met 25% (vermenigvuldig met 1,25)

Voorbeeld 4: Nieuwe velden maken

Als er geen veld bestaat, $mul maakt u het en stelt u het in op 0.

db.stores.updateOne(
  { "_id": "438db151-04b8-4422-aa97-acf94bc69cfc" },
  {
    $mul: {
      "sales.bonusPoints": 100,
      "staff.overtimeHours": 40
    }
  }
)

Beide bonusPoints en overtimeHours worden gemaakt met waarde 0.

Voorbeeld 5: Werken met decimalen

Pas nauwkeurige decimale vermenigvuldigers toe voor financiële berekeningen.

db.stores.updateOne(
  { "_id": "438db151-04b8-4422-aa97-acf94bc69cfc" },
  {
    $mul: {
      "sales.totalSales": 0.915
    }
  }
)

Voorbeeld 6: Matrixelementen bijwerken

Vermenigvuldigers toepassen op specifieke elementen in matrices met behulp van positionele operatoren.

db.stores.updateOne(
  {
    "_id": "438db151-04b8-4422-aa97-acf94bc69cfc",
    "sales.salesByCategory.categoryName": "Direct-Drive Turntables"
  },
  {
    $mul: {
      "sales.salesByCategory.$.totalSales": 1.15
    }
  }
)

Voorbeeld 7: Negatieve waarden en nul

Negatieve vermenigvuldigers en nulwaarden verwerken.

db.stores.updateOne(
  { "_id": "438db151-04b8-4422-aa97-acf94bc69cfc" },
  {
    $mul: {
      "sales.totalSales": -1,
      "staff.totalStaff.fullTime": 0
    }
  }
)

Dit doet het volgende:

  • Negatief maken totalSales (handig voor omkeringen)
  • fullTime instellen op 0

Na het toepassen van een vermenigvuldiger van 1,5 op personeel en 1,25 op verkoop, wordt het document als volgt bijgewerkt:

{
  "_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
      }
    ]
  }
}