MongoDB $ setoninsert -Operator

MongoDB $ setoninsert -Operator
Die update () -Methode von mongoDB bietet mehrere Betreiber, um die Werte des Dokuments zu aktualisieren. Von diesen Betreibern werden wir den $ setoninsert -Operator untersuchen. Der $ setonInsert -Operator in MongoDB führt einen Einsatz- und Aktualisierungsvorgang durch, wenn das Upsert -Flag mit der Funktion update () angewendet wird. Wenn die Upsert -Option mit dem wahren Wert angegeben und ein Dokument eingefügt wird, fügt nur der $ setonInsert -Bediener während der Aktualisierungsvorstellung ein Feld ein. Der $ setoninsert -Operator hat keinen Einfluss auf den Fall, in dem die Funktion kein Dokument hinzufügt.

Wie der $ setoninsert -Operator in MongoDB funktioniert

Der $ setoninsert -Operator von MongoDB führt die Update () -Operationen mit dem Upsert -Flag durch, was impliziert, dass dieser Vorgang nur Daten einfügt. Um den Betrieb des $ setoninsert -Operators zu beginnen, müssen wir die MongoDB -Sammlung erstellen. Hier haben wir die Sammlung als „WorkerScollection“ berechtigt und einige Dokumente in diese Sammlung eingefügt. Um die Dokumente in die „Workercollections“ einzufügen. Die Abfrage mehrerer Dokumenteninsertionen in „WorkerScollection“ ist im Folgenden dargestellt:

db.Workerscollection.InsertOne (
"id": 1,
"Name": "Bella",
"Alter": 31,
"Gehalt": 50000,
"Höhe": 6.5,
"Arbeitszeit" :
"Tag": "8 Stunden",
"Nacht": "5 Stunden"
,
"Einzelheiten" :
"Stadt": "Newyork",
"Telefon": "0842888123"

,

"id": 2,
"Name": "Kevin",
"Alter": 29,
"Gehalt": 45000,
"Höhe": 5.9,
"Arbeitszeit" :
"Tag": "6 Stunden",
"Nacht": "3 Stunden"
,
"Einzelheiten" :
"Stadt": "Houston",
"Telefon": "8329423099"

,

"id": 3,
"Name": "Steven",
"Alter": 34,
"Gehalt": 39000,
"Höhe": 6.4,
"Arbeitszeit" :
"Tag": "9 Stunden",
"Nacht": "2 Stunden"
,
"Einzelheiten" :
"Stadt": "Kalifornien",
"Telefon": "812373002"

)

Wenn die Dokumente in der bereitgestellten Sammlung erfolgreich eingefügt werden, wird die folgende Ausgabe auf der MongoDB -Shell erzielt:


Anerkannt: wahr,
InisedID: ObjectID ("63B56A6707E9102DCADCF96A")

Beispiel 1: Verwenden des $ setoninsert -Operators zum Einfügen des neuen Dokuments

Wir haben bereits drei Dokumente in die MongoDB -Sammlung „Workerscollection“ eingefügt,. Jetzt können wir ein neues Dokument in derselben Kollektion mit dem $ setoninsert -Operator hinzufügen. Wir haben die folgende Abfrage, bei der wir die update () -Methode verwenden, um den Ausdruck "ID": 4 "anzugeben. Anschließend verwenden wir den "$ setoninsert" -Preiber, um die Felder "Alter" und "Gehalt" mit den neuen Werten festzulegen, die im Dokument nicht vorhanden sind. Danach wenden wir die Upsert -Flagge mit dem „wahren“ Wert an. Erstens wird das neue Dokument mit der „ID“ erstellt: 4. Anschließend weist der $ setonInsert -Operator die Werte dem entsprechenden Feld des neuen Dokuments zu.

db.Workerscollection.update ("id": 4, $ setonInsert: "älter": 35, "Gehalt": 40000, upsert: true);

Die Ausführung der vorherigen Upsert -Abfrage gibt die Ausgabe zurück, die in der folgenden Demonstration angezeigt wird. Die WriterSults haben die Option "UpsertedCount", die den Wert von „1“ hat, was darauf hinweist.


Anerkannt: wahr,
InisedID: ObjectID ("63B56CCA378B59E68E0C4608"),
MatchedCount: 0,
ModifiedCount: 0,
UpsertedCount: 1

Beispiel 2: Verwenden des $ setoninsert -Operators zum Einfügen der neuen eingebetteten Felder in ein neues Dokument

Der $ setoninsert -Operator wird auch für das eingebettete Dokument verwendet. Wir können den $ setonInsert -Operator mit der Funktion "update () und der Upsert -Option verwenden, die True zugewiesen ist. Hier ist eine Darstellung der Abfrage, um das neue eingebettete Dokument in unsere „WorkerScollection“ einzufügen. Wir verwenden die update () -Methode, bei der wir die „Details festlegen.Stadt ”:„ Chicago “ Ausdruck zuerst. Dann wenden wir den $ setonInsert -Operator an, in dem die eingebetteten Felder „Arbeitsplätze".Tag “und„ Arbeitskräfte “.Nacht “werden mit neuen Werten eingestellt. Die Upsert -Option wird auch mit dem wahren Wert festgelegt, um das eingebettete Dokument zu aktualisieren.

db.Workerscollection.Update ("Details.Stadt ":" Chicago ",
$ setonInsert: "Arbeitsplätze.Tag ":" 5 Stunden "," Arbeitskräfte ".Nacht ":" 5HRs ", UpSert: true)

Die Autorsultes in der folgenden Ausgabe zeigt an, dass der UpsertedCount 1 ist, was bedeutet, dass die vorherige Operation erfolgreich ist.


Anerkannt: wahr,
InisedID: ObjectID ("63B584D4378B59E68E0C4B36"),
MatchedCount: 0,
ModifiedCount: 0,
UpsertedCount: 1

Beispiel 3: Verwenden des $ setoninsert -Operators zum Aktualisieren des Dokuments

Es gibt einen weiteren Fall des $ setoninsert -Operators von MongoDB. Die vorherigen Beispiele verwendeten den $ setonInsert -Operator, um das neue Dokument einzufügen. In diesem Fall von MongoDB verwenden wir nun den $ setoninsert -Operator, um das Dokument zu aktualisieren, das bereits in der Sammlung „WorkersCollection“ vorhanden ist. Hier haben wir eine Update () -Anfrage, in der die Bedingung festgelegt wird, die das Dokument aktualisiert, dessen "ID" -Feldwert "2" lautet. Wenn das Dokument übereinstimmt. Der $ Set -Operator wird mit dem Wert gegen die Felder „Alter“ und „Höhe“ angegeben. Anschließend wird der $ setonInsert -Operator bereitgestellt, um das Feld des Namens mit dem Wert „Carle“ im vorhandenen Dokument einzulegen. Am Ende weisen wir der UPSERT -Option zum Betrieb den wahren Wert zu.

db.Workerscollection.aktualisieren(
"id": 2,

$ set: Alter: 40, Höhe: 5.7,
$ setoninsert: name: "carle"
,
upsert: true
)

Das Dokument wird erfolgreich aktualisiert, und die folgende Ausgabe wird mit dem Optionswert von UpSertCount angezeigt, der auf TRUE eingestellt ist:


Anerkannt: wahr,
Einfügung: 2,
MatchedCount: 0,
ModifiedCount: 0,
UpsertedCount: 1

Beispiel 4: Verwenden des $ setoninsert -Operators zum Aktualisieren des Dokument

Als nächstes haben wir einen Fall des $ setonInsert -Operator. Wir stellen die Abfrage an, in der wir das Dokument mit der update () -Methode aktualisieren. Die update () -Methode wird weiter mit dem Vorgang implementiert, bei dem der Ausdruck zuerst zugewiesen wird und das Feld „ID“ den Wert von „1“ hat. Danach rufen wir den $ set -Operator auf, um die angegebenen Felder und den $ setoninsert -Operator zu ändern, um das Feld "Name" mit dem neuen Wert "Alex" festzulegen, der "Name" festgelegt hat, das "Alex" ist. Der upsert -echte Wert wird nach dem $ setoninsert -Operator zugewiesen.

db.Workerscollection.aktualisieren(
id: 1,

$ set: Gehalt: 60000, Höhe: 4.98,
$ setonInsert: name: "Alex"
,
upsert: true
)

Wir können sehen, dass der MatchedCount und der ModifiedCount mit dem Wert von „1“ festgelegt sind. Der UpSertCount hat einen Nullwert, der angibt.


Anerkannt: wahr,
Eingeklagte: NULL,
MatchedCount: 1,
ModifiedCount: 1,
UpsertedCount: 0

Beispiel 5: Verwenden des $ setoninsert -Operators für das übereinstimmende Dokument

Als nächstes kommt der Betrieb des $ setoninsert -Operators, um zu überprüfen. Der $ setoninsert -Betreiber ist mit den bereits vorhandenen Dokumenten unwirksam. Lassen Sie uns die folgende Abfrage haben, bei der wir den $ setonInsert -Operator in der update () -Methode haben. Der $ setoninsert -Bediener legt die eingebetteten Felder "City" und "Telefon" mit dem Wert fest, der bereits im Dokument vorhanden ist. Hier ignoriert der Upsert -Vorgang einfach den $ setoninsert -Bediener, da sich die angegebenen Werte bereits im Dokument befinden.

db.Workerscollection.update ("name": "kevin",
$ setoninsert: "Details.Stadt ":" Houston ",
"Einzelheiten.Telefon ":" 8329423099 ",
upsert: true)

Die Ergebnisse bestätigten gerade das übereinstimmende Dokument. Der Störungsvorgang ist in diesem Fall fehlgeschlagen, wie in Folgendes zu sehen ist:


Anerkannt: wahr,
Eingeklagte: NULL,
MatchedCount: 1,
ModifiedCount: 0,
UpsertedCount: 0

Abschluss

Wir haben über den MongoDB $ setoninsert -Operator demonstriert. Wir haben gelernt, diesen Bediener mit MongoDB -Abfragen zu verwenden. Der $ setonInsert -Bediener wird innerhalb der update () -Methode angewendet, um das neue oder angegebene Dokument zu verbessern. Die mögliche Fallabbildung ist in diesem Artikel bereitgestellt, in dem wir das neue Dokument und das neue eingebettete Dokument mit Hilfe des $ setonInsert -Operators eingefügt haben. Danach haben wir den $ setoninsert -Operator bezeichnet, um das bereits vorhandene Dokument und das übereinstimmende Dokument zu aktualisieren.