MongoDB Update()-Dokument mit Beispiel
\
⚡ Intelligente Zusammenfassung
MongoDB Die Dokumentoperationen der Methode `update()` ändern vorhandene Datensätze in einer Sammlung. Die Methode `update()` benötigt eine Bedingung zur Auswahl von Dokumenten und einen Modifikator wie beispielsweise `$set`, um Feldwerte zu ändern. Die Option `multi` aktualisiert mehrere übereinstimmende Dokumente gleichzeitig.
Grundlegende Dokumentaktualisierungen
MongoDB stellt den Befehl update() bereit, um die Dokumente einer Sammlung zu aktualisieren. Um nur die Dokumente zu aktualisieren, die Sie aktualisieren möchten, können Sie der Aktualisierungsanweisung ein Kriterium hinzufügen, sodass nur ausgewählte Dokumente aktualisiert werden.
Die Grundparameter im Befehl sind eine Bedingung, für die das Dokument aktualisiert werden muss, und die nächste ist die Änderung, die durchgeführt werden muss.
Das folgende Beispiel zeigt, wie dies gemacht werden kann.
Schritt 1) Geben Sie den Aktualisierungsbefehl aus
Schritt 2) Wählen Sie die Bedingung aus, anhand derer Sie entscheiden möchten, welches Dokument aktualisiert werden muss. In unserem Beispiel möchten wir das Dokument aktualisieren, das die Mitarbeiter-ID 22 hat.
Schritt 3) Verwenden Sie den Befehl set, um den Feldnamen zu ändern
Schritt 4) Wählen Sie den Feldnamen aus, den Sie ändern möchten, und geben Sie den neuen Wert entsprechend ein.
db.Employee.update( {"Employeeid" : 1}, {$set: { "EmployeeName" : "NewMartin"}});
Wenn der Befehl erfolgreich ausgeführt wurde, wird die folgende Ausgabe angezeigt
Ausgang:
Die Ausgabe zeigt deutlich, dass ein Datensatz die Bedingung erfüllte und daher der entsprechende Feldwert geändert wurde.
MongoDB Update Operatoren
Der $set-Operator ist die gebräuchlichste Methode, um ein Feld zu ändern, aber MongoDB bietet mehrere Aktualisierungsoperatoren für unterschiedliche Anforderungen. Sie platzieren diese im zweiten Argument von update() zusammen mit oder anstelle von $set:
- $set: Legt den Wert eines Feldes fest; falls das Feld noch nicht existiert, wird es erstellt.
- $unset: Entfernt ein Feld vollständig aus dem Dokument.
- $inc: Erhöht oder verringert einen numerischen Wert um einen bestimmten Betrag.
- $mul: Multipliziert den Wert eines numerischen Feldes.
- $rename: Benennt ein Feld in einen neuen Namen um.
- $push: Fügt einem Array-Feld einen Wert hinzu.
- $pull: Entfernt übereinstimmende Werte aus einem Array-Feld.
Jeder Operator wirkt sich nur auf die von Ihnen angegebenen Felder aus, der Rest des Dokuments bleibt unverändert. Sie können mehrere Operatoren in einem einzigen `update()`-Aufruf kombinieren, um mehrere Felder gleichzeitig zu ändern. Dadurch bleiben die Aktualisierungen präzise und das Überschreiben wichtiger Daten wird vermieden.
Mehrere Werte aktualisieren
Um sicherzustellen, dass mehrere/Massendokumente gleichzeitig aktualisiert werden MongoDB Sie müssen die Multioption verwenden, da sonst standardmäßig immer nur ein Dokument gleichzeitig geändert wird.
Das folgende Beispiel zeigt, wie viele Dokumente aktualisiert werden.
In diesem Beispiel suchen wir zunächst das Dokument mit der Mitarbeiter-ID „1“ und ändern den Mitarbeiternamen von „Martin“ in „NewMartin“.
Schritt 1) Geben Sie den Aktualisierungsbefehl aus
Schritt 2) Wählen Sie die Bedingung aus, anhand derer Sie entscheiden möchten, welches Dokument aktualisiert werden muss. In unserem Beispiel möchten wir, dass das Dokument mit der Mitarbeiter-ID „1“ aktualisiert wird.
Schritt 3) Wählen Sie die Feldnamen aus, die Sie ändern möchten, und geben Sie den entsprechenden neuen Wert ein.
db.Employee.update ( { Employeeid : 1 }, { $set : { "EmployeeName" : "NewMartin", "Employeeid" : 22 } } )
Wenn der Befehl erfolgreich ausgeführt wurde und Sie den ausführen "Finden" Befehl zum Suchen nach dem Dokument mit der Mitarbeiter-ID 22. Sie werden die folgende Ausgabe sehen
Ausgang:
Die Ausgabe zeigt deutlich, dass ein Datensatz die Bedingung erfüllte und daher der entsprechende Feldwert geändert wurde.
Wie man ein Dokument aktualisiert und einfügt in MongoDB
Ein Upsert ist eine Kombination aus Update und Insert. Wenn Sie es aktivieren, MongoDB Aktualisiert das Dokument, das der Bedingung entspricht, oder fügt ein neues Dokument ein, falls keine Übereinstimmung gefunden wird. Dies ist hilfreich, wenn Sie nicht sicher sind, ob ein Datensatz bereits existiert.
Um ein Upsert durchzuführen, fügen Sie die Option „upsert“ mit dem Wert „true“ als drittes Argument der Funktion update() hinzu:
db.Employee.update( {Employeeid: 5}, {$set: {EmployeeName: "Sofia"}}, {upsert: true} )
Hier ist was passiert:
- Falls ein Dokument mit der Mitarbeiter-ID 5 existiert, MongoDB aktualisiert das Feld „Mitarbeitername“.
- Falls kein solches Dokument existiert, MongoDB fügt ein neues Dokument mit der Mitarbeiter-ID 5 und dem Mitarbeiternamen „“ ein.Sofiauf ".
Upserts sind praktisch für Zähler, Einstellungen und jeden Workflow, bei dem beim ersten Gebrauch ein Datensatz erstellt und anschließend aktualisiert werden soll. In modernen Systemen MongoDBDas gleiche Verhalten lässt sich auch mit `updateOne()` und `updateMany()` erreichen, indem man `{upsert: true}` als Option übergibt. Vorsicht mit der Bedingung, da ein breiter Filter in Kombination mit `upsert` unerwartete Dokumente erzeugen kann.
updateOne() vs updateMany() vs replaceOne()
Die update()-Methode ist nun ein veralteter Befehl. Modern MongoDB Die Fahrer unterteilen das Verhalten in drei übersichtlichere Methoden. Die folgende Tabelle vergleicht diese:
| Methodik | Was sie tut, | Betroffene Dokumente |
|---|---|---|
| updateOne() | Wendet Aktualisierungsoperatoren auf das erste übereinstimmende Dokument an. | Eins |
| updateMany() | Wendet Aktualisierungsoperatoren auf jedes übereinstimmende Dokument an. | Viele |
| replaceOne() | Ersetzt das gesamte erste übereinstimmende Dokument durch ein neues. | Eins |
Verwenden Sie `updateOne()` für eine einzelne, gezielte Änderung, `updateMany()` anstelle der alten Option `multi` und `replaceOne()`, wenn Sie ein ganzes Dokument austauschen möchten, anstatt nur einzelne Felder zu bearbeiten. Diese Methoden liefern ein übersichtliches Ergebnis, das anzeigt, wie viele Dokumente übereinstimmen und wie viele geändert wurden. Dadurch sind sie sicherer und einfacher zu debuggen als `update()`.



