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

Vytvořte sbírku v MongoDB

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áte true , musíte také nastavit maximální velikost v size 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áhne size než dosáhne maximálního počtu dokumentů, MongoDB odstraní staré dokumenty. Ujistěte se proto, že size 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.


  1. Migrace socket.io z 0.9.x na 1.x, problémy s konfigurací RedisStore

  2. 5 způsobů, jak zkontrolovat velikost sbírky v MongoDB

  3. Zdá se, že výsledky MapReduce jsou omezeny na 100?

  4. Vezmeme součet sloupce v MongoDB