MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

MongoDB einfügen()

In MongoDB die db.collection.insert() Methode fügt ein Dokument oder Dokumente in eine Sammlung ein.

Die collection part ist der Name der Sammlung, in die das Dokument/die Dokumente eingefügt werden sollen.

Beispiel

Hier ist ein Beispiel für die Verwendung von db.collection.insert() um mehrere Dokumente in eine Sammlung namens pets einzufügen :

db.pets.insert([
    { _id: 1, name: "Wag", type: "Dog" },
    { _id: 2, name: "Bark", type: "Dog" },
    { _id: 3, name: "Meow", type: "Cat" }
    ])

Ergebnis:

BulkWriteResult({
	"writeErrors" : [ ],
	"writeConcernErrors" : [ ],
	"nInserted" : 3,
	"nUpserted" : 0,
	"nMatched" : 0,
	"nModified" : 0,
	"nRemoved" : 0,
	"upserted" : [ ]
})

Die db.collection.insert() Die Methode gibt ein Objekt zurück, das den Status des Einfügevorgangs enthält.

Das zurückgegebene Objekt hängt davon ab, ob ein einzelnes Dokument oder mehrere Dokumente eingefügt wurden.

  • Wenn ein einzelnes Dokument eingefügt wird, gibt es ein WriteResult zurück Objekt.
  • Wenn ein Array von Dokumenten eingefügt wird, gibt es ein BulkWriteResult zurück Objekt.

Wir können sehen, dass das obige Beispiel ein BulkWriteResult zurückgegeben hat Objekt. Dies liegt daran, dass wir eine Reihe von Dokumenten hinzugefügt haben. Das hätte es auch getan, wenn das Array nur ein Element enthalten hätte.

Wenn wir jetzt db.collection.find() verwenden Um sich die Sammlung anzusehen, sehen wir die neu hinzugefügten Dokumente.

db.pets.find()

Ergebnis:

{ "_id" : 1, "name" : "Wag", "type" : "Dog" }
{ "_id" : 2, "name" : "Bark", "type" : "Dog" }
{ "_id" : 3, "name" : "Meow", "type" : "Cat" }

In diesem Fall sind unsere drei Dokumente die einzigen in der Sammlung, und daher wurden nur diese Dokumente zurückgegeben.

Wenn die Sammlung jedoch groß wäre, könnten wir die Dokument-IDs verwenden, um das Ergebnis auf nur die Dokumente einzugrenzen, an denen wir interessiert sind.

db.pets.find({_id: {$in: [1,2,3]}})

Ergebnis:

{ "_id" : 1, "name" : "Wag", "type" : "Dog" }
{ "_id" : 2, "name" : "Bark", "type" : "Dog" }
{ "_id" : 3, "name" : "Meow", "type" : "Cat" }

Was ist, wenn die Sammlung nicht existiert?

Wenn die Sammlung nicht vorhanden ist, wird sie erstellt und die Dokumente werden ihr hinzugefügt.

Existiert die Sammlung bereits, werden die Dokumente einfach hinzugefügt (mit Angabe ihrer _id Werte stehen nicht in Konflikt mit bestehenden).

Als ich dieses Beispiel erstellt habe, war die Sammlung nicht vorhanden und wurde daher durch die Einfügeoperation erstellt.

Die _id Feld

Die _id field ist ein eindeutiges Bezeichnerfeld in MongoDB.

Wie im vorherigen Beispiel gezeigt, können Sie Ihre eigene _id angeben Feld im Dokument. Wenn Sie dies tun, muss sein Wert innerhalb der Sammlung eindeutig sein. Das liegt daran, dass Ihre _id wird als eindeutige Kennung des Dokuments verwendet.

Hier ist ein Beispiel für das Einfügen eines Dokuments ohne Angabe der _id Felder.

db.pets.insert(
    { name: "Bruce", type: "Bat" }
    )

Ergebnis:

WriteResult({ "nInserted" : 1 })

Beachten Sie, dass die Methode in diesem Fall ein WriteResult zurückgibt -Objekt anstelle eines BulkWriteResult Objekt. Das liegt daran, dass wir ein einzelnes Dokument eingefügt haben (und es nicht in einem Array war).

Schauen wir uns jetzt noch einmal die Sammlung an.

db.pets.find()

Ergebnis:

{ "_id" : 1, "name" : "Wag", "type" : "Dog" }
{ "_id" : 2, "name" : "Bark", "type" : "Dog" }
{ "_id" : 3, "name" : "Meow", "type" : "Cat" }
{ "_id" : ObjectId("5fe323d837b49e0faf1af218"), "name" : "Bruce", "type" : "Bat" }

Wir können sehen, dass unser neues Dokument in der Sammlung enthalten ist und eine _id hat Feld mit einem automatisch generierten Wert.

Der ordered Parameter

Die db.collection.insert() Die Methode akzeptiert auch einen ordered Parameter. Dies ist ein boolescher Parameter mit einem Standardwert von true .

Der ordered Der Parameter gibt an, ob die Einfügeoperation geordnet oder unsortiert sein soll.

Wenn ordered auf false gesetzt ist werden Dokumente in einem ungeordneten Format eingefügt und können von mongod neu geordnet werden um die Leistung zu steigern.

Wenn bei geordneten Einfügungen während der Einfügung eines der Dokumente ein Fehler auftritt, kehrt MongoDB im Fehlerfall zurück, ohne die verbleibenden Dokumente im Array zu verarbeiten.

Wenn bei ungeordneten Einfügungen beim Einfügen eines der Dokumente ein Fehler auftritt, fügt MongoDB weiterhin die verbleibenden Dokumente in das Array ein.

Weitere Informationen

Die db.collection.insert() -Methode akzeptiert auch ein writeConcern -Argument, das die Bestätigungsstufe beschreibt, die von MongoDB für Schreibvorgänge angefordert wird.

Siehe die MongoDB-Dokumentation für db.collection.insert() für weitere Informationen.