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

Jak spravovat databáze a sbírky v MongoDB


Úvod

MongoDB používá k ukládání, správě a zpracování dat struktury orientované na dokumenty. Jednotlivé dokumenty jsou organizovány do kolekcí, které jsou zase uloženy v databázích. Protože schéma každého dokumentu není definováno statickým schématem, systémy založené na dokumentech nabízejí větší flexibilitu než relační systémy, které se skládají z tabulek a záznamů.

V této příručce si povíme, jak vytvořit a spravovat struktury, které MongoDB používá k organizaci dat. Probereme, jak vytvářet a spravovat databáze a poté, jak vytvářet sbírky, které obsahují podobné nebo související dokumenty.



Jak zobrazit existující databáze

Než začneme vytvářet nové databáze, je užitečné seznámit se s některými metodami, které MongoDB poskytuje pro vyhledávání informací o existujících databázích. To vám může pomoci porozumět aktuálnímu stavu systému, než začnete provádět změny.

Chcete-li zobrazit všechny databáze v systému, ke kterým máte přístup, použijte show dbs metoda:

show dbs
admin   0.000GBconfig  0.000GBlocal   0.000GB

MongoDB odpoví s názvy všech dostupných databází v systému a také souhrnem jejich aktuálního úložného prostoru.

Chcete-li zjistit, na které databázi jste aktuálně nastaveni, použijte db.getName() příkaz nebo jeho zkrácený alias, db :

db
test

Možná zjistíte, že aktuálně používáte databázi, která nebyla uvedena v seznamu show dbs příkaz. Je to proto, že v MongoDB, dokud nezapíšete první dokument do databáze, databáze ve skutečnosti není vytvořena. Takže ve výše uvedeném příkladu je shell připraven pracovat na test databáze, ale protože ještě neexistuje, nebude vrácena show dbs příkaz.

Chcete-li přepnout na jinou databázi, můžete použít use příkaz:

use admin
switched to db admin

Chcete-li získat základní informace o vaší aktuální databázi, můžete použít db.stats() metoda:

db.stats()
{        "db" : "admin",        "collections" : 3,        "views" : 0,        "objects" : 4,        "avgObjSize" : 278.25,        "dataSize" : 1113,        "storageSize" : 86016,        "indexes" : 5,        "indexSize" : 147456,        "totalSize" : 233472,        "scaleFactor" : 1,        "fsUsedSize" : 2876923904,        "fsTotalSize" : 25832407040,        "ok" : 1}

Výstup zobrazuje informace o počtu kolekcí v databázi, statistiky úložiště, informace o indexu a další.



Jak vytvářet databáze

MongoDB nemá explicitní příkaz pro vytvoření nové databáze. Místo toho, jak již bylo zmíněno dříve, musíte místo toho naznačit MongoDB, že chcete zapisovat nové dokumenty do nové databáze. Když jsou tyto dokumenty vytvořeny, implicitně vytvoří databázi.

Chcete-li připravit MongoDB na zápis do nové databáze, zadejte use příkaz pro přepnutí do neexistující databáze.

Zde nastavíme MongoDB k vytvoření nové databáze s názvem playground :

use playground
switched to db playground

Pokud zkontrolujete svou aktuální databázi, potvrdí, že playground Database je aktuálně cílem příkazů souvisejících s databází:

db
playground

Nicméně, jak již bylo zmíněno dříve, protože jsme ještě nevytvořili žádné dokumenty, nebyla vytvořena ani samotná databáze:

show dbs
admin   0.000GBconfig  0.000GBlocal   0.000GB

Abychom skutečně vytvořili novou databázi, musíme nejprve něco vytvořit.



Jak zobrazit sbírky v databázi

V MongoDB, kolekce jsou struktury používané k seskupování dokumentů pomocí jakéhokoli systému kategorizace, který chcete implementovat. Žijí v databázích a ukládají dokumenty.

Dostupné kolekce v databázi, kterou aktuálně používáte, můžete zobrazit pomocí show collections metoda.

Zde se přepneme na admin databáze, která má k dispozici některé kolekce k předvedení:

use adminshow collections
system.rolessystem.userssystem.version

Případně můžete načíst stejné názvy kolekcí v poli pomocí db.getCollectionNames() metoda:

db.getCollectionNames()
[ "system.roles", "system.users", "system.version" ]

Chcete-li zobrazit další informace o kolekcích v aktuální databázi, použijte db.getCollectionInfos() metoda:

db.getCollectionInfos()
[        {                "name" : "system.roles",                "type" : "collection",                "options" : {                },                "info" : {                        "readOnly" : false,                        "uuid" : UUID("776b1fd7-6014-4191-b33c-21350b590627")                },                "idIndex" : {                        "v" : 2,                        "key" : {                                "_id" : 1                        },                        "name" : "_id_"                }        },        {                "name" : "system.users",                "type" : "collection",                "options" : {                },                "info" : {                        "readOnly" : false,                        "uuid" : UUID("8c824fd1-2150-4413-8fac-0b77d16505e5")                },                "idIndex" : {                        "v" : 2,                        "key" : {                                "_id" : 1                        },                        "name" : "_id_"                }        },        {                "name" : "system.version",                "type" : "collection",                "options" : {                },                "info" : {                        "readOnly" : false,                        "uuid" : UUID("7501483a-45cc-492e-a1fd-ccb4349650cb")                },                "idIndex" : {                        "v" : 2,                        "key" : {                                "_id" : 1                        },                        "name" : "_id_"                }        }]

Příkazu můžete také volitelně předat dokument k filtrování výsledků. Například pokud máte zájem pouze o zobrazení informací o system.version kolekce, můžete napsat:

db.getCollectionInfos(    {        name: "system.version"    })
[        {                "name" : "system.version",                "type" : "collection",                "options" : {                },                "info" : {                        "readOnly" : false,                        "uuid" : UUID("7501483a-45cc-492e-a1fd-ccb4349650cb")                },                "idIndex" : {                        "v" : 2,                        "key" : {                                "_id" : 1                        },                        "name" : "_id_"                }        }]

Chcete-li zkontrolovat, kolik dokumentů obsahuje kolekce, použijte db.<collection>.count() metoda. Například následující příkaz zkontroluje, kolik dokumentů je v system.users kolekce:

db.system.users.count()
2

Chcete-li zobrazit základní statistiky o kolekcích v aktuální databázi, použijte db.printCollectionStats() metoda:

db.printCollectionStats()

Příkaz může vydávat více informací, než můžete snadno spotřebovat, ale obsahuje, ale je užitečný v některých scénářích, kdy se potřebujete podrobně podívat na charakteristiky kolekce.



Jak vytvářet sbírky

Chcete-li vytvořit novou sbírku, existují dvě možnosti:sbírky můžete vytvářet implicitně nebo explicitně.

Stejně jako u databází může MongoDB automaticky vytvářet kolekce, když je do nich poprvé zapsán dokument. Tato metoda říká MongoDB, aby vytvořila novou kolekci vložením dokumentu do kolekce, která ještě neexistuje.

Můžeme se například vrátit zpět na playground databáze, o kterou jsme se dříve zajímali. Jakmile jsme v tomto jmenném prostoru, můžeme vložit nový dokument do kolekce voláním insert.() příkaz na jméno, které bychom chtěli použít pro novou kolekci. Zde můžeme vytvořit dokument o snímku v nové kolekci s názvem equipment :

use playgrounddb.equipment.insert({name: "slide"})
switched to db playgroundWriteResult({ "nInserted" : 1 })

Výstup označuje, že byl napsán jeden dokument. Výše uvedený příkaz provedl tři samostatné akce. Nejprve MongoDB vytvořil playground databázi, na kterou jsme odkazovali v našem use příkaz. Vytvořilo také equipment kolekce v rámci databáze, protože voláme insert() příkaz na tento název kolekce. Nakonec vytvoří skutečný dokument v rámci equipment sběr pomocí vstupu, který jsme poskytli do insert() příkaz.

Provedení všech těchto akcí můžete ověřit pomocí následujících příkazů:

show dbsshow collectionsdb.equipment.count()db.equipment.find()

Výstup by měl ukazovat, že playground databáze je nyní mezi uvedenými databázemi, které equipment kolekce je uvedena, že v rámci equipment existuje jeden dokument kolekce a že dokument je {name: "slide"} dokument, který jsme vložili do příkazu.

Další možností, jak vytvořit kolekce, je explicitně použít db.createCollection() metoda. To vám umožňuje vytvářet kolekce, aniž byste do nich přidávali jakékoli dokumenty.

Můžete například vytvořit novou kolekci na playground databáze s názvem maintenance.requests zadáním:

db.createCollection("maintenance.requests")
{ "ok" : 1 }

Můžeme ověřit, že se nová kolekce zobrazí, když ji zadáme, ale že nemá žádné dokumenty:

show collectionsdb.maintenance.requests.count()
equipmentmaintenance.requests0

db.createCollection() Metoda je primárně užitečná, protože umožňuje zadat různé možnosti při vytváření. Můžeme například chtít vytvořit vytvoření omezené kolekce , což je kolekce, která udržuje horní limit své přidělené velikosti, kterou ukládá, tím, že po zaplnění smaže svůj nejstarší dokument.

Chcete-li vytvořit omezenou kolekci s názvem notifications který může uložit maximálně 10240 bajtů informací, můžete zavolat:

db.createCollection(    "notifications",    {        capped: true,        size: 10240    })
{ "ok" : 1}

Tím se vytvoří omezené notification kolekce, kterou můžeme ověřit zadáním:

db.getCollecitonInfos({"options.capped": true})
[        {                "name" : "notifications",                "type" : "collection",                "options" : {                        "capped" : true,                        "size" : 10240                },                "info" : {                        "readOnly" : false,                        "uuid" : UUID("dff7bfb0-1cfc-4170-ba60-fbb834ac6925")                },                "idIndex" : {                        "v" : 2,                        "key" : {                                "_id" : 1                        },                        "name" : "_id_"                }        }]


Jak smazat sbírky

Chcete-li smazat sbírku, můžete použít drop() metoda na samotný sběr.

Chcete-li například vypustit omezená notification kolekce, kterou jsme vytvořili, můžete zadat:

db.notifications.drop()
true

Úspěšnost operace můžete ověřit opětovným uvedením kolekcí v aktuální databázi:

show collections
equipmentmaintenance.requests


Jak smazat databáze

Chcete-li odstranit celou databázi, zavolejte db.dropDatabase() příkaz. Toto smaže aktuální databázi, takže se před provedením ujistěte, že jste ve správné databázi:

use playgrounddb.dropDatabase()
switched to db playground{ "dropped" : "playground", "ok" : 1 }

Pokud zkontrolujete seznam dostupných databází, playground se již nezobrazuje:

show dbs
admin   0.000GBconfig  0.000GBlocal   0.000GB

Protože jsme ještě nepřešli na novou databázi, MongoDB je stále nastaven tak, aby vytvořil playground Pokud se rozhodneme přidat novou kolekci nebo dokument. Můžete to ověřit pomocí db příkaz:

db
playground


Závěr

Vytváření a správa databází a kolekcí je důležitou dovedností při používání MongoDB. Tyto základní organizační nástroje vám umožňují seskupit související dokumenty, dotazovat se na podmnožiny informací a nastavit zásady autorizace pro různé typy dat. Seznámení s tím, jak efektivně spravovat tyto struktury, vám umožní spravovat svá data efektivněji s menším počtem překvapení.




  1. Výhody a nevýhody použití celeru vs. RQ

  2. Integrace ClusterControl s SNMP:Část druhá

  3. Push and Set Operations v Same MongoDB Update

  4. Klíčové věci ke sledování v MongoDB