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.

  • ๏ธ update()-Methode: Der Befehl update() รคndert Felder in Dokumenten, die einer bestimmten Bedingung entsprechen.
  • ๐ŸŽฏ Spielbedingung: Das erste Argument wรคhlt die zu aktualisierenden Dokumente aus, z. B. {Employeeid:1}.
  • ๐Ÿ”ง $ set Operator: Der Operator $set weist einem Feld einen neuen Wert zu, ohne das gesamte Dokument zu ersetzen.
  • ๐Ÿ“š Viele Updates: Die Option โ€žmultiโ€œ oder โ€župdateMany()โ€œ รคndert jedes Dokument, das รผbereinstimmt, anstatt nur eines.
  • โž• Upsert: Die Option โ€žUpsertโ€œ fรผgt ein neues Dokument ein, wenn kein vorhandenes Dokument der Bedingung entspricht.
  • ๐Ÿ”„ Moderne Methoden: updateOne(), updateMany() und replaceOne() sind die aktuellen Ersatzfunktionen fรผr die veraltete Funktion update().

MongoDB Update() Dokument

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:

Grundlegende Dokumentaktualisierungen

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:

Mehrere Werte aktualisieren

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

Hรคufig gestellte Fragen

Ohne einen Aktualisierungsoperator wie $set, MongoDB Ersetzt das gesamte รผbereinstimmende Dokument durch das von Ihnen angegebene Objekt und lรถscht dabei alle nicht enthaltenen Felder. Verwenden Sie immer `$set`, um bestimmte Felder zu รคndern, wรคhrend Sie die Datenstruktur beibehalten.ping Der Rest blieb unversehrt.

Ja. Wenn das in $set angegebene Feld im รผbereinstimmenden Dokument fehlt, MongoDB Fรผgt es mit dem angegebenen Wert hinzu. Dadurch ist $set sowohl zum Aktualisieren vorhandener Felder als auch zum Hinzufรผgen neuer Felder nรผtzlich.

Verwenden Sie `findOneAndUpdate()` mit der Option `returnDocument` auf 'after' gesetzt. Dadurch wird die ร„nderung angewendet und das geรคnderte Dokument in einem einzigen Vorgang zurรผckgegeben. Dies ist hilfreich, wenn Sie die neuen Werte sofort benรถtigen.

KI kann eine einfache Anfrage in einen Update- oder UpdateMany-Befehl mit der richtigen Bedingung und dem richtigen Operator, wie z. B. $set oder $inc, umwandeln und jeden Teil erklรคren, damit Anfรคnger Fehler vermeiden.

Ja. KI kann ein Update kennzeichnen, das $set auslรคsst und ganze Dokumente ersetzen wรผrde, warnen, wenn ein Filter auf alles zutrifft, und vorschlagen, vor der Ausfรผhrung in der Produktion an einer Kopie zu testen.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: