MongoDB poskytuje insert()
metoda (a dvě další) pro přidávání dokumentů do databáze.
MongoDB poskytuje následující tři metody pro vkládání dokumentů do databáze:
insert()
insertOne()
insertMany()
Položka insert()
Metoda
insert()
metoda vloží jeden nebo více dokumentů do kolekce. Každý dokument je uveden jako parametr. Název kolekce je předřazen před insert()
metoda.
Zde je syntaxe pro vložení jednoho dokumentu:
db.collectionName.insert({ name: "value" })
Ve výše uvedeném příkladu se dokument skládá z { name: "value" }
. Toto je dokument JSON. Dokumenty JSON se skládají z jednoho nebo více párů název/hodnota uzavřených ve složených závorkách {}
.
MongoDB používá k ukládání dat dokumenty JSON, proto vkládáme dokumenty v tomto formátu.
Tuto metodu jsme již použili dříve, když jsme vytvářeli databázi.
Pojďme přidat další dokument do naší databáze:
db.artists.insert({ artistname: "Jorn Lande" })
Tím se vloží dokument s { artistname: "Jorn Lande" }
jako jeho obsah.
Nyní, když hledáme umělce kolekce, uvidíme dva dokumenty (včetně toho, který jsme vytvořili dříve):
> db.artists.find() { "_id" : ObjectId("5780fbf948ef8c6b3ffb0149"), "artistname" : "The Tea Party" } { "_id" : ObjectId("5781c9ac48ef8c6b3ffb014a"), "artistname" : "Jorn Lande" }
Všimněte si, že MongoDB vytvořil _id
pole pro dokumenty. Pokud žádný nezadáte, MongoDB vám ho vytvoří. Toto pole však můžete zadat při vkládání, pokud chcete mít kontrolu nad hodnotou _id
pole.
db.artists.insert({ _id: 1, artistname: "AC/DC" })
Výsledek:
> db.artists.find() { "_id" : ObjectId("5780fbf948ef8c6b3ffb0149"), "artistname" : "The Tea Party" } { "_id" : ObjectId("5781c9ac48ef8c6b3ffb014a"), "artistname" : "Jorn Lande" } { "_id" : 1, "artistname" : "AC/DC" }
_id
kterou MongoDB poskytuje, je 12bajtová hodnota ObjectId. Skládá se z následujících hodnot;
- 4bajtová hodnota představující sekundy od epochy Unixu,
- 3bajtový identifikátor stroje,
- 2bajtové ID procesu a
- 3bajtový čítač začínající náhodnou hodnotou.
Vytvořit více dokumentů
Do jednoho insert()
můžete vložit více dokumentů metoda.
V tomto příkladu vložíme tři dokumenty:
db.artists.insert( [ { artistname: "The Kooks" }, { artistname: "Bastille" }, { artistname: "Gang of Four" } ] )
Všimněte si, že dokumenty jsou poskytovány jako pole. Dokumenty jsou uzavřeny v hranatých závorkách []
a jsou odděleny čárkami.
Spuštěním výše uvedeného kódu se zobrazí následující zpráva:
BulkWriteResult({ "writeErrors" : [ ], "writeConcernErrors" : [ ], "nInserted" : 3, "nUpserted" : 0, "nMatched" : 0, "nModified" : 0, "nRemoved" : 0, "upserted" : [ ] })
Vložené dokumenty
Dokument může obsahovat další dokumenty, pole a pole dokumentů.
V rámci dokumentu můžete také zadat více párů název/hodnota tak, že je oddělíte čárkou.
db.artists.insert({ artistname : "Deep Purple", albums : [ { album : "Machine Head", year : 1972, genre : "Rock" }, { album : "Stormbringer", year : 1974, genre : "Rock" } ] })
Výsledek:
WriteResult({ "nInserted" : 1 })
Parametry
insert()
metoda přijímá následující parametry.
Parametr | Typ | Popis |
---|---|---|
document | dokument nebo pole | Dokument nebo pole dokumentů pro vložení do kolekce (jako ve výše uvedených příkladech). |
writeConcern | dokument | Volitelný parametr. Toto je dokument vyjadřující zájem o zápis. Problém zápisu popisuje úroveň potvrzení požadovaného od MongoDB pro operace zápisu do samostatného mongoda nebo do sad replik nebo do sdílených clusterů. |
ordered | logická hodnota | Volitelný parametr. Pokud je hodnota nastavena na true , MongoDB provede uspořádané vložení dokumentů v poli, a pokud dojde k chybě u jednoho z dokumentů, MongoDB se vrátí bez zpracování zbývajících dokumentů v poli.
Pokud je hodnota nastavena na |
insertOne()
Metoda
Můžete také použít insertOne()
metoda pro vložení jednoho dokumentu do kolekce:
db.musicians.insertOne({ _id: 1, name: "Ian Gillan", instrument: "Vocals" })
Zde jsme specifikovali neexistující kolekci. Stejně jako u insert()
zadaná kolekce bude vytvořena, pokud již neexistuje.
Všimnete si, že výstup je jiný, než když použijete insert()
metoda:
{ "acknowledged" : true, "insertedId" : 1 }
Vložené dokumenty
Stejně jako u insert()
, můžete vložit vložené dokumenty a pole dokumentů:
db.artists.insertOne({ artistname : "Miles Davis", albums : [ { album : "Kind of Blue", year : 1959, genre : "Jazz" }, { album : "Bitches Brew", year : 1970, genre : "Jazz" } ] })
Výsledek:
{ "acknowledged" : true, "insertedId" : ObjectId("578214f048ef8c6b3ffb0159") }
Položka insertMany()
Metoda
Jak název napovídá, můžete použít insertMany()
pro vložení více dokumentů:
db.musicians.insertMany( [ { _id: 2, name: "Ian Paice", instrument: "Drums", born: 1948 }, { _id: 3, name: "Roger Glover", instrument: "Bass", born: 1945 }, { _id: 4, name: "Steve Morse", instrument: "Guitar", born: 1954 }, { _id: 5, name: "Don Airey", instrument: "Keyboards", born: 1948 }, { _id: 6, name: "Jeff Martin", instrument: "Vocals", born: 1969 }, { _id: 7, name: "Jeff Burrows", instrument: "Drums", born: 1968 }, { _id: 8, name: "Stuart Chatwood", instrument: "Bass", born: 1969 }, ] )
Opět výstup při použití insertMany()
se liší, než kdybyste vložili více dokumentů pomocí insert()
metoda:
{ "acknowledged" : true, "insertedIds" : [ 2, 3, 4, 5, 6, 7, 8 ] }
Vložené dokumenty
db.artists.insertMany( [ { artistname : "Robben Ford", albums : [ { album : "Bringing it Back Home", year : 2013, genre : "Blues" }, { album : "Talk to Your Daughter", year : 1988, genre : "Blues" } ] }, { artistname : "Snoop Dogg", albums : [ { album : "Tha Doggfather", year : 1996, genre : "Rap" }, { album : "Reincarnated", year : 2013, genre : "Reggae" } ] } ])
Výsledek:
{ "acknowledged" : true, "insertedIds" : [ ObjectId("578217c248ef8c6b3ffb015a"), ObjectId("578217c248ef8c6b3ffb015b") ] }