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: