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

MongoDB insert()

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í.


  1. mongoDB upsert na pole

  2. Existuje způsob, jak automaticky objevit novou IP uzlu clusteru v Redis Cluster s Lettuce

  3. GenericJackson2JsonRedisSerializer Ignorovat třídu a atribut

  4. java.lang.NoClassDefFoundError při použití ovladače MongoDB