sql >> Databáze >  >> NoSQL >> MongoDB

MongoDB insertMany()

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 jako true pokud operace proběhla s obavami o zápis nebo false 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í.


  1. Model.find() vrací v mongoose prázdnou

  2. Najít klíč podle hodnoty

  3. Neošetřené odmítnutí slibu:Chyba:Chybná adresa URL, nelze ji analyzovat

  4. Výukový program MongoDB pro rok 2022 – Zjistěte, co je MongoDB?