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í
WriteResultobjekt. - Když je vloženo pole dokumentů, vrátí
BulkWriteResultobjekt.
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í.