MongoDB Array von Objekten mit insert() mit Beispiel

โšก Intelligente Zusammenfassung

MongoDB Das Beispiel โ€žArray von Objekten mit insert()โ€œ zeigt, wie man mehrere Dokumente in einem Schritt zu einer Sammlung hinzufรผgt. Es speichert ein Array von Mitarbeiterdatensรคtzen, bettet Arrays in ein Dokument ein und gibt die Ergebnisse รผbersichtlich mit der JSON-Funktion print aus.

  • ๐Ÿ“ฅ Beilage: Die Methode insert() fรผgt ein Array von Dokumenten in einer einzigen, effizienten Operation zu einer Sammlung hinzu.
  • ๐Ÿงพ Dokumentenmodell: Jedes Dokument ist eine Menge von Feld-Wert-Paaren, und MongoDB Fรผgt automatisch eine eindeutige _id hinzu.
  • ๐Ÿ—‚๏ธ Eingebettete Arrays: Ein Array kann auch als Feld innerhalb eines Dokuments existieren, keeping Zusammengehรถrige Werte.
  • ๐Ÿ” Moderne Methoden: insertOne() und insertMany() sind die aktuellen, รผbersichtlicheren Nachfolger der alten insert()-Methode.
  • ๏ธ Readable Ausgang: Der Befehl forEach(printjson) gibt jedes Dokument in einem รผbersichtlichen, leicht lesbaren JSON-Format aus.

Was ist die insert()-Methode in MongoDB?

Die insert()-Methode in MongoDB Fรผgt einer Sammlung ein oder mehrere Dokumente hinzu. Ein Dokument ist eine Menge von Feld-Wert-Paaren, die im BSON-Format (einer binรคren Form von JSON) gespeichert sind. Wird ein einzelnes Dokument รผbergeben, speichert `insert()` genau diesen Datensatz; wird ein Array von Dokumenten รผbergeben, werden alle Dokumente in einem einzigen Vorgang gespeichert, was schneller ist als das Einfรผgen einzelner Dokumente.

Die Methode wird fรผr eine bestimmte Sammlung mit dem Muster db.collection.insert() ausgefรผhrt. Falls die Zielsammlung noch nicht existiert, MongoDB Wird beim ersten Einfรผgen automatisch erstellt. Jedes Dokument erhรคlt auรŸerdem ein eindeutiges _id-Feld, falls Sie keines angeben, sodass jeder Datensatz spรคter identifiziert werden kann.

Wรคhrend insert() noch funktioniert, ist es neuer. MongoDB Die Versionen bieten `insertOne()` und `insertMany()` als รผbersichtlichere Alternativen. Die folgenden Beispiele verwenden `insert()`, um ein Array von Mitarbeiterdokumenten hinzuzufรผgen und die Ergebnisse anschlieรŸend in einem lesbaren JSON-Format anzuzeigen.

Hinzufรผgen eines Arrays von Dokumenten

Mit dem Befehl โ€žEinfรผgenโ€œ kรถnnen auch mehrere Dokumente gleichzeitig in eine Sammlung eingefรผgt werden. Das folgende Codebeispiel kann zum gleichzeitigen Einfรผgen mehrerer Dokumente verwendet werden.

Das folgende Beispiel zeigt, wie dies erreicht werden kann.

Schritt 1) Erstellen Sie JavaSkript Variable namens โ€žmyEmployeeโ€œ, um das Array von Dokumenten zu speichern

Schritt 2) Fรผgen Sie der Variablen die erforderlichen Dokumente mit dem Feldnamen und den Werten hinzu

Schritt 3) Verwenden Sie den Befehl insert, um das Array von Dokumenten in die Sammlung einzufรผgen

var myEmployee=
	[
		{
			"Employeeid" : 1,
			"EmployeeName" : "Smith"
		},
		{
			"Employeeid"   : 2,
			"EmployeeName" : "Mohan"
		},
		{
			"Employeeid"   : 3,
			"EmployeeName" : "Joe"
		},
	];

	db.Employee.insert(myEmployee);

Wenn der Befehl erfolgreich ausgefรผhrt wurde, wird die folgende Ausgabe angezeigt

MongoDB Array von Objekten mit insert()

Die Ausgabe zeigt, dass diese drei Dokumente der Sammlung hinzugefรผgt wurden.

Wie man ein Array in ein Dokument einfรผgt

Neben dem Einfรผgen einer Reihe einzelner Dokumente, MongoDB Ermรถglicht das Speichern eines Arrays als Feld innerhalb eines einzelnen Dokuments. Dies ist nรผtzlich, wenn ein Datensatz naturgemรครŸ eine Liste von Werten enthรคlt, beispielsweise ein Mitarbeiter mit mehreren Fรคhigkeiten oder ein Student, der in mehreren Kursen eingeschrieben ist. Denn MongoDB Es wird ein flexibles Dokumentenmodell verwendet, bei dem sich das Array direkt im Objekt und nicht in einer separaten Tabelle befindet, wodurch zusammengehรถrige Daten beieinander bleiben.

Das folgende Beispiel fรผgt ein Mitarbeiterdokument ein, das ein Array-Feld namens โ€žSkillsโ€œ enthรคlt:

db.Employee.insert(
   {
      "Employeeid" : 4,
      "EmployeeName" : "Alan",
      "Skills" : [ "MongoDB", "Node.js", "Express" ]
   }
);

Die einzelnen Teile dieses Dokuments funktionieren wie folgt:

  • Mitarbeiter-ID und Mitarbeitername sind gewรถhnliche Feld-Wert-Paare.
  • Besondere Qualifikationen ist ein Array-Feld, das drei Zeichenkettenwerte in eckigen Klammern enthรคlt.
  • Das gesamte Dokument, einschlieรŸlich des eingebetteten Arrays, wird in einem einzigen Einfรผgevorgang gespeichert.

Nach dem Hinzufรผgen des Datensatzes kรถnnen Sie das eingebettete Array mit einer Suchabfrage รผberprรผfen, die das Ergebnis im JSON-Format ausgibt:

db.Employee.find( { "Employeeid" : 4 } ).forEach(printjson)

Die Ausgabe zeigt das Skills-Array, das im Mitarbeiterdokument verschachtelt ist. LaterSie kรถnnen dem Array mit dem Operator `$push` neue Werte hinzufรผgen oder ein einzelnes Element anhand seiner Indexposition lesen. Durch das Speichern zusammenhรคngender Werte auf diese Weise bleibt jedes Dokument in sich abgeschlossen, die Notwendigkeit von Joins zwischen Sammlungen wird reduziert und die Daten werden lesbarer und einfacher zu pflegen.

insert() vs insertOne() vs insertMany()

MongoDB Es werden drei verwandte Methoden zum Hinzufรผgen von Daten bereitgestellt. Die folgende Tabelle vergleicht sie, damit Sie die richtige auswรคhlen kรถnnen:

Methodik Zweck Beispiel
einfรผgen() Eine รคltere Methode zum Hinzufรผgen eines einzelnen Dokuments oder eines Arrays von Dokumenten. Sie funktioniert zwar noch, wird aber in neueren Treibern nicht mehr unterstรผtzt. db.Employee.insert(myEmployee)
insertOne() Fรผgt genau ein Dokument hinzu und gibt dessen eingefรผgte _id zurรผck. Bevorzugt fรผr einzelne Datensรคtze. db.Employee.insertOne({ โ€ฆ })
insertMany() Fรผgt in einem einzigen Aufruf ein Array von Dokumenten hinzu und gibt alle eingefรผgten _ids zurรผck. Bevorzugt fรผr Masseneinfรผgungen. db.Employee.insertMany([ { โ€ฆ }, { โ€ฆ } ])

Fรผr neue Projekte sollten Sie `insertOne()` und `insertMany()` verwenden, da diese eine klarere Zielsetzung und eine bessere Fehlerberichterstattung bieten. Die Methode `insert()` bleibt hauptsรคchlich aus Grรผnden der Abwรคrtskompatibilitรคt mit รคlteren Tutorials und Skripten erhalten.

Drucken im JSON-Format

JSON ist ein Format namens JavaSkriptobjektnotation, und ist lediglich eine Mรถglichkeit, Informationen organisiert und leicht lesbar zu speichern. In unseren weiteren Beispielen werden wir die JSON-Druckfunktion verwenden, um die Ausgabe in einem besseren Format anzuzeigen.

Schauen wir uns ein Beispiel fรผr das Drucken im JSON-Format an

db.Employee.find().forEach(printjson)

Code Erlรคuterung:

  1. Die erste ร„nderung besteht darin, die Funktion `forEach()` an die Funktion `find()` anzuhรคngen. Dadurch wird sichergestellt, dass jedes Dokument in der Sammlung explizit durchlaufen wird. Auf diese Weise haben Sie mehr Kontrolle darรผber, was Sie mit jedem Dokument in der Sammlung tun kรถnnen.
  2. Die zweite ร„nderung besteht darin, den Befehl printjson in die forEach-Anweisung einzufรผgen. Dadurch wird jedes Dokument in der Sammlung im JSON-Format angezeigt.

Wenn der Befehl erfolgreich ausgefรผhrt wurde, wird die folgende Ausgabe angezeigt

Ausgang:

Drucken im JSON-Format

Die Ausgabe zeigt deutlich, dass alle Dokumente im JSON-Stil gedruckt werden.

Hรคufig gestellte Fragen

Ja. Wenn Sie ein Array von Dokumenten an `insert()` รผbergeben, fรผgen Sie alle Dokumente in einem einzigen Vorgang hinzu. Dieses Einfรผgen mehrerer Dokumente gleichzeitig ist schneller als der separate Aufruf von `insert()` fรผr jedes Dokument, obwohl `insertMany()` mittlerweile die bevorzugte Methode ist.

Ja. Wenn ein Dokument kein _id-Feld enthรคlt, MongoDB Beim Einfรผgen wird automatisch eine eindeutige ObjectId generiert, sodass jeder gespeicherte Datensatz spรคter identifiziert und abgerufen werden kann.

StandardmรครŸig MongoDB Fรผgt Dokumente in der angegebenen Reihenfolge ein und stoppt beim ersten Fehler; die restlichen Dokumente bleiben ungefรผget. Wird die Option โ€žOrderedโ€œ auf โ€žFalseโ€œ gesetzt, wird der Vorgang trotz Fehlern fortgesetzt.

Ja. KI-Tools kรถnnen eine Klartextbeschreibung Ihrer Daten in `insertOne()`- oder `insertMany()`-Anweisungen umwandeln, einschlieรŸlich eingebetteter Arrays. รœberprรผfen Sie immer die generierten Felder und Datentypen, bevor Sie sie auf eine Datenbank anwenden.

KI kann anhand Ihrer Abfragemuster vorschlagen, ob Arrays in ein Dokument eingebettet oder auf separate Sammlungen verwiesen werden sollen. Dies hilft Anfรคngern, Daten effizient zu modellieren und gleichzeitig unnรถtige Duplikate oder zu tiefe Verschachtelungen zu vermeiden.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: