Unterschied zwischen $push und $addToSet in MongoDB

Tahseen Tauseef 15 Februar 2024
  1. Operatoren in MongoDB
  2. $push-Operator in MongoDB
  3. $addToSet in MongoDB
Unterschied zwischen $push und $addToSet in MongoDB

In diesem Artikel wird erläutert, welche Operatoren in MongoDB enthalten sind. Wofür werden die Operatoren $push und $addToSet verwendet?

Zusätzlich wird der Unterschied zwischen diesen beiden Operatoren mit Codesegmenten angegeben. Dieser Artikel behandelt die folgenden Themen.

  1. Operatoren in MongoDB
  2. $push in MongoDB
  3. $addToSet in MongoDB

Operatoren in MongoDB

Operatoren sind spezielle Symbole oder Schlüsselwörter, die einen Compiler oder Interpreter anweisen, mathematische oder logische Operationen auszuführen.

Die Abfrageoperatoren verbessern die Funktionalität von MongoDB, indem sie es Entwicklern ermöglichen, komplexe Abfragen zu erstellen, um mit Datensätzen zu interagieren, die zu ihren Anwendungen passen.

Im Folgenden werden verschiedene Arten von Operatoren in MongoDB erläutert.

  1. Abfrage- und Projektionsoperatoren – Abfrageoperatoren helfen beim Auffinden von Daten in einer Datenbank, während Projektionsoperatoren ändern, wie Daten angezeigt werden.
  2. Update-Operatoren – Update-Operatoren ermöglichen es Ihnen, Daten zu Ihrer Datenbank zu ändern oder hinzuzufügen.
  3. Aggregation Pipeline Stages – Verfügbare Aggregationsstufen für die Aggregation Pipeline.
  4. Aggregations-Pipeline-Operatoren – Aggregations-Pipeline-Operationen verfügen über eine Sammlung von Operatoren, die zum Definieren und Bearbeiten von Dokumenten in Pipeline-Stufen verfügbar sind.
  5. Abfragemodifikatoren – Abfragemodifikatoren bestimmen, wie Abfragen ausgeführt werden.

$push-Operator in MongoDB

Der Operator $push in MongoDB wird verwendet, um einen bestimmten Wert an ein Array anzuhängen. Eine Art Update-Operator ist der $push-Operator.

Wenn das angegebene Feld im zu aktualisierenden Dokument nicht vorhanden ist, fügt der Operator $push es als neues Feld mit dem angegebenen Wert als Element hinzu. Der Vorgang ist fehlgeschlagen, wenn das Aktualisierungsfeld nicht vom Array-Typ war.

Wenn der Wert ein Array ist, hängt der Operator $push beim Aktualisieren das gesamte Array als einzelnes Element an. Wenn Sie jedes Wertelement einzeln hinzufügen möchten, verwenden Sie den Operator $push mit dem Modifikator $each.

Syntax:

db.collection.update( <query>,{ $push: { <field>: <value> } })

Die folgende Datenbanksammlung wird in allen Beispielen verwendet.

Beispielsammlung:

db={
  "student": [
    {
      "_id": 1,
      "sem": 1,
      "subjects": [
        "phys",
        "chem",
        "maths",
        "gkn",
        "stat",
        "astro"
      ],
      "achieve": [
        70,
        87,
        90,
        90,
        65,
        81
      ]
    }
  ]
}

Beispiel für den MongoDB-Operator $push.

Wenn Sie 95 an das Array-Feld anhängen möchten, das ausgeführt wird, wenn die Bedingung subjects "maths" ist, können wir den MongoDB-Befehl unten verwenden.

db.student.update( { "subjects" : "maths" },{ $push: { "achieve": 95 } });

Da das im vorangegangenen Beispiel beschriebene Kriterium mit dieser Aktion übereinstimmt, wird der Wert 95 an das Array completed angehängt.

So sehen Sie sich das neu aktualisierte Dokument an:

db.student.find().pretty();

Die Ausgabe der oben angegebenen Abfrage ist in diesem Screenshot zu sehen.

Push-Operator mongodb

Beispiel für MongoDB $push, wenn das Feld kein Array ist

Wenn Sie 2 zur Spalte sem hinzufügen möchten, die kein Array-Typ-Feld ist, können wir den MongoDB-Befehl unten verwenden.

db.student.update( { "subjects" : "maths" },{ $push: { "sem": 2 } });

Da das Feld sem im obigen Beispiel nicht vom Typ Array ist, schlägt die Operation fehl und führt zu folgendem Ergebnis.

Cannot apply $push/$push All modifier to non-array

Beispiel für MongoDB $push mit $each-Modifikatoren

Wenn wir viele Einträge oder mehr als ein Element (77,49,83) an das Array anhängen möchten, das für den dokumentierten Schüler erstellt wurde, wobei die Bedingung Fächer "Mathematik" ist, können wir den MongoDB-Befehl unten verwenden.

db.student.update( { "subjects" : "maths" },{ $push: { "achieve": {$each : [77,49,83 ]} } });

Der $each-Modifikator wurde im obigen Beispiel verwendet, um mehrere Einträge 77,49,83 an das Array-Ergebnis anzuhängen, das dem Kriteriumsthema "maths" entspricht.

So sehen Sie sich das neu aktualisierte Dokument an:

db.student.find().pretty();

Die Ausgabe der oben angegebenen Abfrage ist in diesem Screenshot zu sehen.

Push-Operator mit jedem

$addToSet in MongoDB

Der Operator $addToSet fügt einem Array nur dann einen Wert hinzu oder hängt ihn an, wenn der Wert noch nicht im Array existiert. Wenn sich der Wert bereits im Array befindet, gibt $addToSet dasselbe Array zurück, ohne es zu ändern.

Der Operator $addToSet stellt sicher, dass es keine doppelten Einträge in einem Array gibt, wenn es aktualisiert wird; Die Reihenfolge der Elemente in einer Anzeige kann jedoch geändert werden, nachdem ein Wert hinzugefügt wurde.

Syntax:

db.collection.update( { <field>: <value> }, { $addToSet: { <field>: <addition> } } );

Oben verwendete Sammlung:

 { "_id" : 1, "sem" : 1, "achieve" : [  80,  70,  90 ] }

Beispiel für $addToSet zum Anhängen eines Werts

Wenn wir den Wert 92 an das Array anhängen möchten, können wir den folgenden MongoDB-Befehl verwenden.

db.student.update( { "sem": 1}, { $addToSet: { "achieve": 92 } } );

Der vorhergehende Code fügt 92 an das Array-Feld complete an.

So sehen Sie sich das neu aktualisierte Dokument an:

db.student.find().pretty();

Ausgabe des Befehls:

{ "_id" : 1, "achieve" : [ 70, 80, 90, 92 ], "sem" : 1 }

Beispiel für $addToSet zum Hinzufügen mehrerer Werte mit dem Modifikator $each

Der folgende MongoDB-Befehl kann die Zahlen 10 und 11 an das Array-Feld anhängen.

db.student.update( { "sem": 1}, { $addToSet: { "achieve":{$each:[10,11]}}});

Im obigen Beispiel wurden die Nummern 10 und 11 an das Array-Feld angehängt, das mit dem Modifikator $each erreicht wurde.

So sehen Sie sich das neu aktualisierte Dokument an:

db.student.find().pretty();

Die Ausgabe der oben angegebenen Abfrage ist in diesem Screenshot zu sehen.

addToSet-Operator

Verwandter Artikel - MongoDB Operator