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

MongoDB - Vytvořte dokument

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 false , MongoDB provede neuspořádané vložení, a pokud dojde k chybě u jednoho z dokumentů, zbývající dokumenty v poli budou nadále zpracovávány.

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")
	]
}

  1. Jak mohu zajistit, aby Webmachine a eredis spolupracovaly?

  2. Redis :Jak mohu třídit svůj hash podle klíčů?

  3. Django Celery získá počet úkolů

  4. Jak uložit a načíst řetězec s diakritikou v redis?