MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Jak zarządzać bazami danych i kolekcjami w MongoDB


Wprowadzenie

MongoDB wykorzystuje struktury zorientowane na dokumenty do przechowywania, zarządzania i przetwarzania danych. Poszczególne dokumenty są organizowane w kolekcje, które z kolei przechowywane są w bazach danych. Ponieważ schemat każdego dokumentu nie jest zdefiniowany przez schemat statyczny, systemy oparte na dokumentach oferują większą elastyczność niż systemy relacyjne składające się z tabel i rekordów.

W tym przewodniku omówimy tworzenie i zarządzanie strukturami, których MongoDB używa do organizowania danych. Omówimy, jak tworzyć bazy danych i zarządzać nimi, a następnie tworzyć kolekcje do przechowywania podobnych lub powiązanych dokumentów.



Jak wyświetlić istniejące bazy danych

Zanim zaczniemy tworzyć nowe bazy danych, warto zapoznać się z niektórymi metodami udostępnianymi przez MongoDB do wyszukiwania informacji o istniejących bazach danych. Może to pomóc w zrozumieniu aktualnego stanu systemu przed rozpoczęciem wprowadzania zmian.

Aby wyświetlić wszystkie bazy danych w systemie, do którego masz dostęp, użyj show dbs metoda:

show dbs
admin   0.000GBconfig  0.000GBlocal   0.000GB

MongoDB odpowie, podając nazwy wszystkich dostępnych baz danych w systemie, a także podsumowanie ich aktualnej przestrzeni dyskowej.

Aby zobaczyć, na której bazie danych aktualnie pracujesz, użyj db.getName() polecenie lub jego skrócony alias, db :

db
test

Może się okazać, że obecnie używasz bazy danych, która nie została wymieniona przez show dbs Komenda. Dzieje się tak, ponieważ w MongoDB, dopóki nie zapiszesz pierwszego dokumentu do bazy danych, baza danych nie jest faktycznie tworzona. Tak więc, w przykładzie powyżej, powłoka jest przygotowana do działania na test bazy danych, ale ponieważ jeszcze nie istnieje, nie zostanie zwrócona przez show dbs polecenie.

Aby przełączyć się na inną bazę danych, możesz użyć use polecenie:

use admin
switched to db admin

Aby uzyskać podstawowe informacje o aktualnej bazie danych, możesz użyć 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}

Dane wyjściowe pokazują informacje o liczbie kolekcji w bazie danych, statystykach przechowywania, informacjach o indeksach i nie tylko.



Jak tworzyć bazy danych

MongoDB nie ma wyraźnego polecenia do tworzenia nowej bazy danych. Zamiast tego, jak wspomniano wcześniej, musisz wskazać MongoDB, że chcesz pisać nowe dokumenty do nowej bazy danych. Kiedy te dokumenty zostaną utworzone, domyślnie utworzą bazę danych.

Aby przygotować MongoDB do zapisu do nowej bazy danych, wydaj polecenie use polecenie przełączenia na nieistniejącą bazę danych.

Tutaj skonfigurujemy MongoDB, aby utworzyć nową bazę danych o nazwie playground :

use playground
switched to db playground

Jeśli sprawdzisz swoją aktualną bazę danych, potwierdzi to, że playground baza danych jest obecnie celem poleceń związanych z bazą danych:

db
playground

Jednak, jak wspomniano wcześniej, ponieważ nie stworzyliśmy jeszcze żadnych dokumentów, sama baza danych nie została jeszcze utworzona:

show dbs
admin   0.000GBconfig  0.000GBlocal   0.000GB

Aby faktycznie stworzyć nową bazę danych, musimy najpierw coś stworzyć.



Jak przeglądać kolekcje w bazie danych

W MongoDB kolekcje są strukturami używanymi do grupowania dokumentów przy użyciu dowolnego systemu kategoryzacji, który chcesz wdrożyć. Żyją w bazach danych i przechowują dokumenty.

Możesz zobaczyć dostępne kolekcje w bazie danych, której aktualnie używasz, używając show collections metoda.

Tutaj przejdziemy do admin baza danych, w której dostępne są kolekcje do zademonstrowania:

use adminshow collections
system.rolessystem.userssystem.version

Alternatywnie możesz pobrać te same nazwy kolekcji w tablicy za pomocą db.getCollectionNames() metoda:

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

Aby wyświetlić dodatkowe informacje o kolekcjach w bieżącej bazie danych, użyj 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_"                }        }]

Możesz również opcjonalnie przekazać dokument do polecenia, aby przefiltrować wyniki. Na przykład, jeśli interesuje Cię tylko wyświetlenie informacji o system.version kolekcja, możesz wpisać:

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

Aby sprawdzić, ile dokumentów zawiera kolekcja, użyj db.<collection>.count() metoda. Na przykład poniższe polecenie sprawdza, ile dokumentów znajduje się w system.users kolekcja:

db.system.users.count()
2

Aby wyświetlić podstawowe statystyki dotyczące kolekcji w bieżącej bazie danych, użyj db.printCollectionStats() metoda:

db.printCollectionStats()

Polecenie może wyświetlić więcej informacji, niż możesz łatwo zużyć, ale zawiera, ale jest pomocne w niektórych scenariuszach, w których musisz dokładnie przyjrzeć się cechom kolekcji.



Jak tworzyć kolekcje

Istnieją dwie opcje tworzenia nowej kolekcji:możesz tworzyć kolekcje jawnie lub niejawnie.

Podobnie jak w przypadku baz danych, MongoDB może automatycznie tworzyć kolekcje przy pierwszym zapisaniu do nich dokumentu. Ta metoda nakazuje MongoDB utworzenie nowej kolekcji poprzez wstawienie dokumentu do kolekcji, która jeszcze nie istnieje.

Na przykład możemy wrócić do playground bazę danych, którą byliśmy wcześniej zainteresowani. Gdy już znajdziemy się w tej przestrzeni nazw, możemy wstawić nowy dokument do kolekcji, wywołując funkcję insert.() polecenie na nazwę, której chcemy użyć dla nowej kolekcji. Tutaj możemy stworzyć dokument o slajdzie w nowej kolekcji o nazwie equipment :

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

Dane wyjściowe wskazują, że napisano jeden dokument. Powyższe polecenie wykonało trzy oddzielne akcje. Najpierw MongoDB stworzył playground baza danych, do której odwoływaliśmy się w naszym use Komenda. Stworzył również equipment kolekcja w bazie danych, ponieważ wywołujemy funkcję insert() polecenie na tej nazwie kolekcji. Na koniec tworzy rzeczywisty dokument w equipment kolekcja przy użyciu danych wejściowych, które dostarczyliśmy do insert() polecenie.

Możesz sprawdzić, czy wszystkie te czynności zostały wykonane za pomocą następujących poleceń:

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

Dane wyjściowe powinny pokazywać, że playground baza danych znajduje się teraz wśród wymienionych baz danych, które equipment kolekcja jest wymieniona, że ​​w equipment znajduje się jeden dokument kolekcji i że dokument to {name: "slide"} dokument, który wstawiliśmy w poleceniu.

Inną opcją do tworzenia kolekcji jest jawne użycie db.createCollection() metoda. Pozwala to na tworzenie kolekcji bez dodawania do nich żadnych dokumentów.

Na przykład możesz utworzyć nową kolekcję na playground baza danych o nazwie maintenance.requests wpisując:

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

Możemy sprawdzić, czy nowa kolekcja pojawia się, gdy o nią pytamy, ale nie zawiera dokumentów:

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

db.createCollection() Metoda jest użyteczna przede wszystkim dlatego, że pozwala określić różne opcje podczas tworzenia. Na przykład możemy chcieć utworzyć kolekcja ograniczona , który jest zbiorem, który utrzymuje górny limit swojego przydzielonego rozmiaru, który przechowuje, usuwając najstarszy dokument, gdy jest pełny.

Aby utworzyć ograniczoną kolekcję o nazwie notifications który może przechowywać maksymalnie 10240 bajtów informacji, możesz zadzwonić:

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

Spowoduje to utworzenie ograniczonego notifications kolekcja, którą możemy zweryfikować wpisując:

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 usunąć kolekcje

Aby usunąć kolekcję, możesz użyć drop() metody na samej kolekcji.

Na przykład, aby usunąć ograniczone notifications kolekcja, którą stworzyliśmy, możesz wpisać:

db.notifications.drop()
true

Możesz sprawdzić, czy operacja się powiodła, ponownie wyświetlając kolekcje w bieżącej bazie danych:

show collections
equipmentmaintenance.requests


Jak usunąć bazy danych

Aby usunąć całą bazę danych, wywołaj db.dropDatabase() Komenda. Spowoduje to usunięcie bieżącej bazy danych, więc przed wykonaniem upewnij się, że znajdujesz się we właściwej bazie danych:

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

Jeśli sprawdzisz listę dostępnych baz danych, playground nie jest już wyświetlany:

show dbs
admin   0.000GBconfig  0.000GBlocal   0.000GB

Ponieważ nie przeszliśmy jeszcze na nową bazę danych, MongoDB nadal jest skonfigurowany do tworzenia playground bazy danych czy zdecydujemy się dodać nową kolekcję lub dokument. Możesz to zweryfikować za pomocą db polecenie:

db
playground


Wniosek

Tworzenie i zarządzanie bazami danych i kolekcjami to ważna umiejętność podczas korzystania z MongoDB. Te podstawowe narzędzia organizacyjne umożliwiają grupowanie powiązanych dokumentów, sprawdzanie podzbiorów informacji i konfigurowanie zasad autoryzacji dla różnych typów danych. Zapoznanie się z tym, jak skutecznie zarządzać tymi strukturami, pozwoli Ci skuteczniej zarządzać danymi przy mniejszej liczbie niespodzianek.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongodb, zapytanie zbiorcze z $lookup

  2. Jak używać Node.js do nawiązywania połączenia tunelowego SSH z bazą danych MongoDB?

  3. Node.js + mangusta znajdź zawiesza węzeł, gdy ponad 100 wyników

  4. Redis vs. MongoDB:co musisz wiedzieć

  5. Walidacja hasła / potwierdzanie hasła za pomocą schematu Mongoose