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.