Když vytvoříte databázi v MongoDB, vaše databáze je v podstatě prázdný kontejner, do kterého můžete přidat jednu nebo více kolekcí.
Kolekce je analogická tabulce v relačních databázích.
V relačních databázích můžete použít CREATE TABLE
vytvořit každou tabulku, kterou chcete v databázi.
MongoDB ale není relační databáze a svá data ukládá jako dokumenty. Každý dokument je uložen ve sbírce.
Tento článek ukazuje, jak vytvořit kolekci v MongoDB.
Dvě možnosti
Pro vytváření kolekcí v MongoDB máte dvě možnosti:
- Implicitní
- Explicitní
Zde je příklad každého z nich.
Vytvořit sbírku – implicitně
Kolekci můžete vytvořit implicitně jednoduchým přidáním dokumentu do neexistující kolekce. Když to uděláte, sbírka se vytvoří, pokud ještě neexistuje.
Zde je příklad implicitního vytvoření kolekce:
db.pets.insert({ name: "Fetch" })
Tím se vytvoří sbírka nazvaná pets
a vloží do něj dokument.
Ve skutečnosti sbírku vytvoří, pouze pokud ještě neexistuje. Pokud již existuje, pak jednoduše vloží dokument do existující kolekce s tímto názvem.
V podstatě syntaxe vypadá takto:
db.<collection>.insert()
Kde <collection>
je název kolekce.
Vytvořit sbírku – explicitně
Kolekce můžete také vytvářet explicitně pomocí db.createCollection()
metoda. Tato metoda umožňuje zadat různé možnosti, jako je nastavení maximální velikosti nebo pravidla ověřování dokumentace.
Je to něco podobného jako CREATE TABLE
příkaz v SQL. Nicméně MongoDB nevyžaduje, abyste specifikovali sloupce, datové typy atd., jako byste museli zadat pomocí CREATE TABLE
při použití relační databáze.
Zde je příklad použití db.createCollection()
způsob vytvoření kolekce:
db.createCollection("employees")
Výsledek:
{ "ok" : 1 }
V tomto příkladu jsem nespecifikoval žádné možnosti. Proto nemělo žádný skutečný užitek z toho, že to vytvoříte jako tyto verše, když to vytvoříte implicitně (jako v předchozím příkladu).
Pokud však chcete určit možnosti pro svou sbírku, pak je správnou cestou její explicitní vytvoření.
Zde je příklad zadání některých možností při vytváření kolekce:
db.createCollection(
"products",
{
capped : true,
size : 7500500,
max : 7000
}
)
Výsledek:
{ "ok" : 1 }
Zde je vysvětlení možností, které jsem uvedl v tomto příkladu:
capped
argument umožňuje určit, zda má být velikost kolekce omezena (tj. nesmí přesáhnout určitou velikost). Pokud zadátetrue
, musíte také nastavit maximální velikost vsize
pole.size
argument nastavuje maximální velikost v bajtech pro omezenou kolekci. Jakmile omezená kolekce dosáhne své maximální velikosti, MongoDB odstraní starší dokumenty, aby se uvolnilo místo pro nové dokumenty.size
pole je povinné pro omezené kolekce a ignorováno pro ostatní kolekce.max
argument umožňuje zadat maximální počet dokumentů povolených v omezené kolekci. Pokud omezená sbírka dosáhnesize
než dosáhne maximálního počtu dokumentů, MongoDB odstraní staré dokumenty. Ujistěte se proto, žesize
argument je dostatečný k tomu, aby obsahoval počet dokumentů zadaný pomocímax
argument.
Toto jsou tři různé možnosti, které můžete zadat pomocí db.createCollection()
metoda.
Syntaxe a další podrobnosti
Úplná syntaxe (v době psaní tohoto článku) vypadá takto:
db.createCollection( <name>,
{
capped: <boolean>,
autoIndexId: <boolean>,
size: <number>,
max: <number>,
storageEngine: <document>,
validator: <document>,
validationLevel: <string>,
validationAction: <string>,
indexOptionDefaults: <document>,
viewOn: <string>,
pipeline: <pipeline>,
collation: <document>,
writeConcern: <document>
}
)
Viz db.createCollection()
z oficiální dokumentace MongoDB, kde najdete podrobné vysvětlení každé možnosti.