MongoDB bietet viele Möglichkeiten, Dokumente in eine Sammlung einzufügen.
Hier sind 5 Möglichkeiten, Dokumente in eine Sammlung einzufügen, wenn Sie die Mongo-Shell verwenden.
Der insertOne()
Methode
Die insertOne()
Methode fügt ein einzelnes Dokument in eine Sammlung ein.
Sein vollständiger Name lautet db.collection.insertOne()
, wobei collection
ist der Name der Sammlung, in die das Dokument eingefügt werden soll.
Hier ist ein Beispiel für das Einfügen eines Dokuments in eine Sammlung namens pets
:
db.pets.insertOne( {
name: "Scratch",
type: "Cat"
} )
Ergebnis:
{ "acknowledged" : true, "insertedId" : ObjectId("5fe2d15637b49e0faf1af214") }
Die db.collection.insertOne()
Die Methode gibt ein Dokument zurück, das Folgendes enthält:
- Ein boolescher
acknowledged
alstrue
ob die Operation mit Write Concern oderfalse
ausgeführt wurde wenn Schreibschutz deaktiviert war. - Ein Feld
insertedId
mit der_id
Wert des eingefügten Dokuments.
Der insertMany()
Methode
Die insertMany()
-Methode ähnelt insertOne()
, außer dass mehrere Dokumente in eine Sammlung eingefügt werden.
Auch auf ähnliche Weise wie insertOne()
, sein vollständiger Name ist db.collection.insertMany()
, wobei collection
ist der Name der Sammlung, in die das Dokument eingefügt werden soll. Dies gilt für alle in diesem Artikel aufgeführten Methoden.
Hier ist ein Beispiel für die Verwendung von db.collection.insertMany()
um mehrere Dokumente in eine Sammlung namens pets
einzufügen :
db.pets.insertMany([
{ _id: 1, name: "Wag", type: "Dog" },
{ _id: 2, name: "Bark", type: "Dog" },
{ _id: 3, name: "Meow", type: "Cat" }
])
Ergebnis:
{ "acknowledged" : true, "insertedIds" : [ 1, 2, 3 ] }
Die db.collection.insertMany()
Die Methode gibt ein Dokument zurück, das Folgendes enthält:
- Ein boolescher
acknowledged
alstrue
ob die Operation mit Write Concern oderfalse
ausgeführt wurde wenn Schreibschutz deaktiviert war. - Ein Array von
_id
Werte für jedes erfolgreich eingefügte Dokument.
Das insert()
Methode
Das insert()
Methode ist wie eine Kombination aus insertOne()
und insertMany()
. Sie können damit entweder ein einzelnes Dokument oder mehrere Dokumente in eine Sammlung einfügen.
Hier ist ein Beispiel für die Verwendung von db.collection.insert()
um ein einzelnes Dokument einzufügen:
db.pets.insert(
{ name: "Bruce", type: "Bat" }
)
Ergebnis:
WriteResult({ "nInserted" : 1 })
Wenn ein einzelnes Dokument eingefügt wird, db.collection.insert()
gibt ein WriteResult
zurück Objekt. Wenn ein Array von Dokumenten eingefügt wird, wird ein BulkWriteResult
zurückgegeben Objekt.
Hier ist ein Beispiel für die Verwendung von db.collection.insert()
um mehrere Dokumente 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" : [ ] })
Wie bereits erwähnt, ein BulkWriteResult
Objekt wird zurückgegeben, wenn ein Array von Dokumenten eingefügt wird.
Das bulkWrite()
Methode
Das bulkWrite()
-Methode können Sie Massenschreibvorgänge ausführen.
Eigentlich insertMany()
führt bereits Masseneinfügungsvorgänge durch. Dasselbe gilt für insert()
beim Einfügen einer Reihe von Dokumenten. Aber bulkWrite()
ermöglicht es Ihnen, Masseneinfügungs-, Aktualisierungs- und Entfernungsvorgänge durchzuführen, alles über einen einzigen Methodenaufruf.
Beispiel:
db.pets.bulkWrite([
{ insertOne: { "document": { "_id": 1, "name": "Bubbles", "type": "Fish" }}},
{ insertOne: { "document": { "_id": 2, "name": "Wag", "type": "Dog" }}},
{ updateOne : {
"filter" : { "_id" : 3 },
"update" : { $set : { "name" : "Fluffy", "type" : "Cat" } },
"upsert" : true
} },
{ replaceOne : {
"filter" : { "_id" : 4 },
"replacement" : { "name" : "Bite", "type" : "Dog", "weight": 5 },
"upsert" : true
} }
])
Ergebnis:
{ "acknowledged" : true, "deletedCount" : 0, "insertedCount" : 2, "matchedCount" : 0, "upsertedCount" : 2, "insertedIds" : { "0" : 1, "1" : 2 }, "upsertedIds" : { "2" : 3, "3" : 4 } }
In diesem Fall existierte die Sammlung nicht wirklich (ich habe sie nach dem vorherigen Beispiel gelöscht), und daher sind die einzigen Dokumente, die jetzt in der Sammlung enthalten sind, die in diesem Beispiel angegebenen.
Werfen wir einen Blick auf die Sammlung.
db.pets.find()
Ergebnis:
{ "_id" : 1, "name" : "Bubbles", "type" : "Fish" } { "_id" : 2, "name" : "Wag", "type" : "Dog" } { "_id" : 3, "name" : "Fluffy", "type" : "Cat" } { "_id" : 4, "name" : "Bite", "type" : "Dog", "weight" : 5 }
Wie erwartet wurden alle vier Dokumente eingefügt.
Die Upsert-Operation
Dies bringt uns zu unserer fünften Methode zum Einfügen von Dokumenten in eine Sammlung in MongoDB – der Upsert-Operation.
Dies ist eher eine bedingte Methode zum Einfügen von Dokumenten. Ein Upsert ist eine Option, die Sie für Aktualisierungsvorgänge verwenden können. Es fügt nur dann ein neues Dokument ein, wenn das angegebene Dokument noch nicht existiert. Wenn es existiert, wird das Originaldokument aktualisiert (und kein Dokument eingefügt).
Wir haben bereits Beispiele für Upserts gesehen. Im vorherigen Beispiel haben wir "upsert" : true
angegeben beim Ausführen von updateOne
und replaceOne
Operationen. Das führte dazu, dass zwei Dokumente eingefügt wurden, da die Sammlung keine Dokumente enthielt, die ihren Filterkriterien entsprachen.
Hier ist ein weiteres Beispiel für ein Upsert. Dieses Mal verwenden wir es für updateOne()
Methode.
db.pets.updateOne(
{ name: "Harry" },
{ $set: { type: "Hamster" } },
{ upsert: true }
)
Ergebnis:
{ "acknowledged" : true, "matchedCount" : 0, "modifiedCount" : 0, "upsertedId" : ObjectId("5fe3dc44d991410169410524") }
Hier wollten wir alle Haustiere namens Harry als Hamster festlegen. Aber es gab keine Haustiere namens Harry, also wurde ein Upsert durchgeführt.
Die folgenden Methoden akzeptieren den upsert
Parameter:
update()
updateOne()
updateMany()
findAndModify()
findOneAndUpdate()
findOneAndReplace()
Daher, wenn upsert: true
angegeben ist, führen diese Methoden eine Upsert-Operation durch, wenn sie versuchen, ein nicht vorhandenes Dokument zu aktualisieren.