MongoDB hat einen $mul Feldaktualisierungsoperator, mit dem Sie einen Wert mit einem bestimmten Betrag multiplizieren können.
Wenn das Feld noch nicht existiert, wird es erstellt und sein Wert auf Null gesetzt (0 ) mit demselben numerischen Typ wie der Multiplikator.
Beispiel
Angenommen, wir haben eine Sammlung mit dem folgenden Dokument:
{ "_id" : 1, "bar" : 10 }
Wir können den $mul verwenden Operator in Verbindung mit update() Methode, um den bar zu erhöhen Feld.
So:
db.foo.update(
{ _id: 1 },
{ $mul: { bar: 2 } }
) Ausgabe:
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) Dies sagt uns, dass ein Dokument abgeglichen und geändert wurde.
Sehen wir uns die Sammlung noch einmal an:
db.foo.find() Ergebnis:
{ "_id" : 1, "bar" : 20 } Wir können sehen, dass sich der Betrag auf 20 verdoppelt hat.
Multipliziere ein Feld, das nicht existiert
Wenn Sie $mul verwenden Bei einem Feld, das im Dokument nicht vorhanden ist, wird das Feld hinzugefügt und auf Null gesetzt (0 ) mit demselben numerischen Typ wie der Multiplikator.
Beispiel:
db.foo.update(
{ _id: 1 },
{ $mul: { bar: 3, extra: 2 } }
) Ausgabe:
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
Beachten Sie, dass wir zwei Felder aktualisiert haben; die bar Feld und das extra Feld (das ursprünglich nicht existierte).
Sehen wir uns das Dokument noch einmal an:
db.foo.find() Ergebnis:
{ "_id" : 1, "bar" : 60, "extra" : 0 }
Das sehen wir am bar Feld wurde mit 3 multipliziert , und ein neues extra Feld wurde hinzugefügt und auf 0 gesetzt .
Mischtypen
Die Multiplikation mit Werten gemischter numerischer Typen (32-Bit-Ganzzahl, 64-Bit-Ganzzahl, Gleitkommazahl) kann zu einer Konvertierung des numerischen Typs führen.
Eine Erklärung finden Sie in der MongoDB-Dokumentation.