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.