So verwenden Sie eine Upsert -Abfrage in MongoDB

So verwenden Sie eine Upsert -Abfrage in MongoDB
Die Datenbanken werden weitgehend in SQL- und NoSQL -Typen eingeteilt. MongoDB fällt in die letztere Kategorie und unterstützt eine starke Abfragesprache, um Daten zu verarbeiten. Die Upsert -Abfrage in MongoDB wird verwendet, um die Aktualisierung und Ersatzmethoden zu unterstützen und zu ersetzen. Es wird ein neues Dokument erstellt, wenn die Bedingung nicht von den Aktualisierungs-/Ersetzungsmethoden erfüllt wird. Einige erweiterte Methoden eines Update werden ebenfalls von unterstützt von Steifter Abfrage, und sie beinhalten FindandModify, updateOne (), ersetzen ().

In diesem Artikel wird die Verwendung von Upsert -Abfragen von Basic bis hin zu fortgeschrittenen Ebenen erläutert. Die fortgeschrittene Verwendung dieser Abfrage wird erläutert, indem der Auftrag mit verschiedenen Methoden angewendet wird.

Wie hocher Abfrage in MongoDB funktioniert

Die Upsert -Option hat die folgende Syntax:

Aufstockung:

Der Boolesche Wert kann sein wahr falsch. Standardmäßig hat der Upsert a FALSCH Wert.

So verwenden Sie die Upsert -Abfrage mit der Aktualisierungsmethode

In diesem Abschnitt werden die Upsert -Abfrage mit mehreren Befehlen erläutert. Lassen Sie uns zuerst die Aktualisierungsmethode ausüben. Wie funktioniert das Update in einer Bedingung, in der das Dokument, das wir anpassen möchten, nicht existiert??

Die Personalsammlung enthält die folgenden Dokumente:

> db.Mitarbeiter.finden().hübsch()

Der unten erwähnte Befehl versucht, ein Dokument zu aktualisieren (_id: 3) Das existiert nicht, also wird die Update -Abfrage auch nicht bestehen Steifter noch aktualisieren Jedes Dokument.

> db.Mitarbeiter.update (_ id: 3, name: "alen")

Jetzt fügen wir eine hinzu Steifter Option und setzen Sie seinen Wert auf WAHR in dem gleichen Zustand, wie wir oben erklärt haben. Der unten erwähnte Befehl versucht, ein Dokument zu aktualisieren, das dem Namen entspricht: “SamFeld, aber das Dokument existiert nicht.

Aus der Ausgabe wird beobachtet "1".

> db.Mitarbeiter.update (name: "sam", Desig: "Team-Lead", upsert: true)

Um dies zu überprüfen, überprüfen wir die Dokumente im Inneren “MitarbeiterSammlung mit dem folgenden Befehl:

> db.Mitarbeiter.finden().hübsch()

Notiz: Die Pretty () -Methode wird verwendet, um die Ausgabe in einem klareren Format zu erhalten.

So verwenden Sie die Upsert -Abfrage mit der UpdateOne -Methode

Die Upsert -Option kann mit der UpdateOne -Methode zum Einfügen eines Dokuments verwendet werden, wenn die Bedingungsübereinstimmung nicht erfolgreich ist. Der "MitarbeiterDie Sammlung enthält drei Dokumente, und wir möchten ein Dokument mit ((_id: 3) Das existiert nicht. Zu machen Steifter Funktionell müssen Sie seinen Wert auf true festlegen. Das obige Szenario wird durch die Ausgabe des unten genannten Befehls ausgeführt:

> db.Mitarbeiter.updateOne (_ id: 3, $ set: name: "sam", desig: "team lead", upsert: true)

Im obigen Befehl haben wir verwendet “_id: 3"Um einem Dokument zu entsprechen, wurde dem verbesserten Dokument eine eindeutige ID zugewiesen"_id: 3“. Darüber hinaus können Sie die überprüfen Steifter Aktion durch den Inhalt von Mitarbeiter Sammlung:

> db.Mitarbeiter.finden().hübsch()

So verwenden Sie eine Upsert -Abfrage mit Ersatz -Methode

Die Ersatz -Methode ersetzt den Feldwert (n), wenn die Übereinstimmung erfolgreich ist. Und wenn die Übereinstimmung nicht erfolgreich ist, kann Upsert verwendet werden, um ein neues Dokument hinzuzufügen.

Im folgenden Befehl, ersetzen Der Befehl versucht, das Dokument mit Feld zu ersetzen. “Name: Tom„(Was eigentlich nicht existiert). Der Störwert ist “WAHR"Es wird also ein neues Dokument mit einer Standard -eindeutigen ID hinzugefügt, die das Feld enthält"Name: Jobs" Und "Desig: Autor„:

> db.Mitarbeiter.ersetzen (Name: "Tom", Name: "Jobes", Desig: "Autor", UpSert: true)

So verwenden Sie Upsert mit FindandModify -Methode

Der findandmodify () ändert das Dokument und wirkt fast das gleiche wie das aktualisieren() Methode, aber findandmodify () modifiziert nur ein Dokument, das zuerst übereinstimmt, während die aktualisieren() Methode aktualisiert alle übereinstimmenden Dokumente.

Der unten geschriebene Befehl zeigt die Verwendung des Uspert mit der methode findandModify (). Als die findandmodify () Nicht zu einem Dokument übereinstimmt, daher kommt ein neues Dokument ein:

Der "Anfrage"Keyword, das im Befehl verwendet wird, versucht zu übereinstimmen"_id: 5"Und versucht, das zu aktualisieren"num"Feld für Wert"15„:

> db.Mitarbeiter.findandModify (Abfrage: _id: 5, update: $ inc: num: 15, upsert: true)

Die Abfrage kehrt zurück “Null„Weil wir die Sortierung im Befehl nicht verwendet haben und auch keine Dokumentübereinstimmungen. Wenn Sie sich jedoch den Inhalt des ansehen “Mitarbeiter"Sammlung, Sie finden das neu aufgeführte Dokument mit ID -Wert"_id: 5„:

> db.Mitarbeiter.finden().hübsch()

Abschluss

MongoDB verfügt über eine lange Liste von Befehlen und Abfragen, um Daten in Dokumenten einer Sammlung zu aktualisieren oder zu ersetzen. Neben diesen Befehlen unterstützt die Upsert -Abfrage diese Aktualisierungs-/Ersetzen -Befehle, um ein neues Dokument einzufügen, wenn die Befehle von Aktualisierung/Ersetzen nicht mit jedem Dokument übereinstimmen. In diesem Leitfaden der MongoDB -Serie haben wir die Verwendung einer Upsert -Abfrage mit mehreren Befehlen in MongoDB zur Verfügung gestellt. Nach Analyse des Upsert -Arbeitsmechanismus wird der Schluss gezogen, dass UpSt als Einfügungsmethode für mehrere Aktualisierungs-/Entfernen in MongoDB wirkt.