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()`.


