V MongoDB db.collection.insert()
metoda vloží dokument nebo dokumenty do kolekce.
collection
část je název kolekce, do které se má dokument/dokumenty vložit.
Příklad
Zde je příklad použití db.collection.insert()
pro vložení více dokumentů do kolekce nazvané pets
:
db.pets.insert([
{ _id: 1, name: "Wag", type: "Dog" },
{ _id: 2, name: "Bark", type: "Dog" },
{ _id: 3, name: "Meow", type: "Cat" }
])
Výsledek:
BulkWriteResult({ "writeErrors" : [ ], "writeConcernErrors" : [ ], "nInserted" : 3, "nUpserted" : 0, "nMatched" : 0, "nModified" : 0, "nRemoved" : 0, "upserted" : [ ] })
db.collection.insert()
metoda vrací objekt, který obsahuje stav operace vložení.
Vrácený objekt závisí na tom, zda byl vložen jeden dokument nebo více dokumentů.
- Když je vložen jeden dokument, vrátí
WriteResult
objekt. - Když je vloženo pole dokumentů, vrátí
BulkWriteResult
objekt.
Vidíme, že výše uvedený příklad vrátil BulkWriteResult
objekt. Je to proto, že jsme přidali řadu dokumentů. Udělalo by to, i kdyby pole obsahovalo pouze jeden prvek.
Nyní, když použijeme db.collection.find()
k nahlédnutí do sbírky uvidíme nově přidané dokumenty.
db.pets.find()
Výsledek:
{ "_id" : 1, "name" : "Wag", "type" : "Dog" } { "_id" : 2, "name" : "Bark", "type" : "Dog" } { "_id" : 3, "name" : "Meow", "type" : "Cat" }
V tomto případě jsou naše tři dokumenty jediné ve sbírce, a tak byly vráceny pouze tyto dokumenty.
Pokud by však byla kolekce velká, mohli bychom použít ID dokumentů k zúžení výsledku pouze na dokumenty, které nás zajímají.
db.pets.find({_id: {$in: [1,2,3]}})
Výsledek:
{ "_id" : 1, "name" : "Wag", "type" : "Dog" } { "_id" : 2, "name" : "Bark", "type" : "Dog" } { "_id" : 3, "name" : "Meow", "type" : "Cat" }
Co když sbírka neexistuje?
Pokud kolekce neexistuje, je vytvořena a dokumenty jsou do ní přidány.
Pokud sbírka již existuje, pak se do ní dokumenty jednoduše přidají (s uvedením jejich _id
hodnoty nejsou v rozporu s žádnými existujícími).
Když jsem vytvořil tento příklad, kolekce neexistovala, a tak ji vytvořila operace vložení.
_id
pole
_id
pole je pole jedinečného identifikátoru v MongoDB.
Jak bylo ukázáno v předchozím příkladu, můžete zadat své vlastní _id
pole v dokumentu. Pokud tak učiníte, jeho hodnota musí být v rámci kolekce jedinečná. Důvodem je vaše _id
pole bude použito jako jedinečný identifikátor dokumentu.
Zde je příklad vložení dokumentu bez zadání _id
pole.
db.pets.insert(
{ name: "Bruce", type: "Bat" }
)
Výsledek:
WriteResult({ "nInserted" : 1 })
Všimněte si, že v tomto případě metoda vrací WriteResult
objekt namísto BulkWriteResult
objekt. Je to proto, že jsme vložili jeden dokument (a nebyl v poli).
Nyní se znovu podíváme na sbírku.
db.pets.find()
Výsledek:
{ "_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" }
Vidíme, že náš nový dokument je součástí kolekce a má _id
pole s automaticky generovanou hodnotou.
ordered
Parametr
db.collection.insert()
metoda také přijímá ordered
parametr. Toto je booleovský parametr s výchozí hodnotou true
.
ordered
parametr určuje, zda má být operace vložení uspořádaná nebo neuspořádaná.
Pokud ordered
je nastaveno na false
, dokumenty jsou vloženy v neuspořádaném formátu a mongod
je může změnit ke zvýšení výkonu.
Pokud u objednaných příloh dojde k chybě během vkládání jednoho z dokumentů, MongoDB vrátí chybu bez zpracování zbývajících dokumentů v poli.
Pokud u neuspořádaných příloh dojde k chybě během vkládání jednoho z dokumentů, MongoDB pokračuje ve vkládání zbývajících dokumentů do pole.
Další informace
db.collection.insert()
metoda také přijímá writeConcern
argument, který popisuje úroveň potvrzení požadovaného od MongoDB pro operace zápisu.
Viz dokumentaci MongoDB pro db.collection.insert()
pro více informací.