Korzystając z MongoDB, istnieje więcej niż jeden sposób na wyświetlenie listy kolekcji w bazie danych.
Oto cztery sposoby uzyskania listy kolekcji w bazie danych MongoDB:
show collections
Polecenie- Kolekcja
listCollections
Polecenie db.getCollectionNames()
Metodadb.getCollectionInfos()
Metoda
show collections
Polecenie
Jeśli używasz powłoki mongo, najszybszym sposobem uzyskania listy kolekcji jest użycie show collections
Komenda. To polecenie pobiera listę kolekcji i widoków w bieżącej bazie danych.
Przykład:
show collections
Wynik:
employees pets pettypes products system.views
W tym przypadku jest pięć wyników. Nie możemy tego stwierdzić po prostu patrząc na to, ale pettypes
to właściwie widok. Pozostałe to kolekcje.
system.views
kolekcja to kolekcja systemowa, która zawiera informacje o każdym widoku w bazie danych.
Rzeczywiste zwrócone kolekcje będą zależeć od Twojego poziomu dostępu:
- Dla użytkowników z wymaganym dostępem,
show collections
wyświetla listę niesystemowych kolekcji dla bazy danych. - Dla użytkowników bez wymaganego dostępu,
show collections
wyświetla tylko kolekcje, do których użytkownicy mają uprawnienia.
Kolekcja listCollections
Polecenie
listCollections
Polecenie administracyjne zwraca nazwę i opcje kolekcji i widoków w bazie danych. Zwraca informacje w formie dokumentu.
Przykład:
db.runCommand( { listCollections: 1.0, authorizedCollections: true, nameOnly: true } )
Wynik:
{ "cursor" : { "id" : NumberLong(0), "ns" : "PetHotel.$cmd.listCollections", "firstBatch" : [ { "name" : "employees", "type" : "collection" }, { "name" : "system.views", "type" : "collection" }, { "name" : "pets", "type" : "collection" }, { "name" : "products", "type" : "collection" }, { "name" : "pettypes", "type" : "view" } ] }, "ok" : 1 }
Dokument zawiera informacje, za pomocą których można utworzyć kursor do informacji o kolekcji.
Tym razem możemy zobaczyć, które z nich są kolekcjami, a które widokami.
Możemy również uruchomić polecenie w ten sposób:
db.runCommand( { listCollections: 1.0 } )
Dzięki temu uzyskasz dużo więcej informacji o kolekcjach. Zobacz db.getCollectionInfos()
przykład poniżej, aby zobaczyć dane zwrócone podczas uruchamiania go w ten sposób (db.getCollectionInfos()
metoda jest opakowaniem wokół listCollections
).
db.getCollectionNames()
Metoda
db.getCollectionNames()
Metoda zwraca tablicę zawierającą nazwy wszystkich kolekcji i widoków w bieżącej bazie danych lub, jeśli działa z kontrolą dostępu, nazwy kolekcji zgodnie z uprawnieniami użytkownika.
Przykład:
db.getCollectionNames()
Wynik:
[ "employees", "pets", "pettypes", "products", "system.views" ]
db.getCollectionInfos()
Metoda
db.getCollectionInfos()
Metoda zwraca tablicę dokumentów z informacjami o kolekcji lub widoku, takimi jak nazwa i opcje, dla bieżącej bazy danych. Wyniki zależą od uprawnień użytkownika.
Oto przykład wywołania go bez żadnych argumentów:
db.getCollectionInfos()
Wynik:
[ { "name" : "employees", "type" : "collection", "options" : { }, "info" : { "readOnly" : false, "uuid" : UUID("07e89c25-8842-4331-a1a9-96fe0b4745dc") }, "idIndex" : { "v" : 2, "key" : { "_id" : 1 }, "name" : "_id_" } }, { "name" : "pets", "type" : "collection", "options" : { }, "info" : { "readOnly" : false, "uuid" : UUID("91d1c6d8-8516-455d-a3c2-b157e1998f8c") }, "idIndex" : { "v" : 2, "key" : { "_id" : 1 }, "name" : "_id_" } }, { "name" : "pettypes", "type" : "view", "options" : { "viewOn" : "pets", "pipeline" : [ { "$project" : { "type" : 1 } } ] }, "info" : { "readOnly" : true } }, { "name" : "products", "type" : "collection", "options" : { "capped" : true, "size" : 7500544, "max" : 7000 }, "info" : { "readOnly" : false, "uuid" : UUID("cb084959-f374-4f51-bbed-8998c13dcbe2") }, "idIndex" : { "v" : 2, "key" : { "_id" : 1 }, "name" : "_id_" } }, { "name" : "system.views", "type" : "collection", "options" : { }, "info" : { "readOnly" : false, "uuid" : UUID("3f458338-0678-4d0f-a0cf-eacbd43c8cad") }, "idIndex" : { "v" : 2, "key" : { "_id" : 1 }, "name" : "_id_" } } ]
Definicja db.getCollectionInfos()
faktycznie idzie tak:
db.getCollectionInfos(filter, nameOnly, authorizedCollections)
Możemy więc użyć filter
parametr, aby filtrować listę kolekcji na podstawie wyrażenia zapytania. Można to zastosować do dowolnego pola zwróconego przez metodę.
Możesz także użyć nameOnly
parametr określający, że metoda powinna zwracać tylko nazwy kolekcji i widoków.
authorizedCollections
parametr, gdy jest ustawiony na true
i używane z nameOnly: true
, umożliwia użytkownikowi bez wymaganych uprawnień (tj. akcji listCollections w bazie danych) uruchomienie komendy, gdy wymuszana jest kontrola dostępu. W takim przypadku polecenie zwraca tylko te kolekcje, do których użytkownik ma uprawnienia.
Przykład użycia db.getCollectionInfos()
z tymi parametrami:
db.getCollectionInfos( {}, true, true )
Wynik:
[ { "name" : "employees", "type" : "collection" }, { "name" : "pets", "type" : "collection" }, { "name" : "pettypes", "type" : "view" }, { "name" : "products", "type" : "collection" }, { "name" : "system.views", "type" : "collection" } ]
Oto jeden, w którym filtruję go tylko do określonej nazwy:
db.getCollectionInfos( { name: "pets" }, true, true )
Wynik:
[ { "name" : "pets", "type" : "collection" } ]
A oto, co się stanie, gdy usunę dwa ostatnie argumenty:
db.getCollectionInfos( { name: "pets" } )
Wynik:
[ { "name" : "pets", "type" : "collection", "options" : { }, "info" : { "readOnly" : false, "uuid" : UUID("91d1c6d8-8516-455d-a3c2-b157e1998f8c") }, "idIndex" : { "v" : 2, "key" : { "_id" : 1 }, "name" : "_id_" } } ]