V MongoDB db.collection.insertMany()
metoda vloží více dokumentů do kolekce.
collection
část je název kolekce, do které se mají dokumenty vložit.
Příklad
Zde je příklad použití db.collection.insertMany()
pro vložení více dokumentů do kolekce nazvané pets
:
db.pets.insertMany([
{ _id: 1, name: "Wag", type: "Dog" },
{ _id: 2, name: "Bark", type: "Dog" },
{ _id: 3, name: "Meow", type: "Cat" }
])
Výsledek:
{ "acknowledged" : true, "insertedIds" : [ 1, 2, 3 ] }
db.collection.insertMany()
metoda vrací dokument obsahující:
- Logická hodnota
acknowledged
jakotrue
pokud operace proběhla s obavami o zápis nebofalse
pokud bylo zakázáno psaní. - Pole
_id
hodnoty pro každý úspěšně vložený dokument.
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, dokumenty se do ní 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 vkládání dokumentů bez zadání _id
pole.
db.pets.insertMany([
{ name: "Bruce", type: "Bat" },
{ name: "Sweetie", type: "Honey Badger" }
])
Výsledek:
{ "acknowledged" : true, "insertedIds" : [ ObjectId("5fe30ef737b49e0faf1af215"), ObjectId("5fe30ef737b49e0faf1af216") ] }
_id
hodnoty dokumentů jsou vráceny. Mohli bychom je použít k vyhledávání pouze dokumentů, které jsme vložili do sbírky.
Ale v tomto případě se podívejme na celou kolekci.
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("5fe30ef737b49e0faf1af215"), "name" : "Bruce", "type" : "Bat" } { "_id" : ObjectId("5fe30ef737b49e0faf1af216"), "name" : "Sweetie", "type" : "Honey Badger" }
Vidíme, že naše dva nové dokumenty jsou součástí sbírky.
ordered
Parametr
db.collection.insertMany()
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
může změnit pořadí 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.insertMany()
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.insertMany()
pro více informací.