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

4 sposoby na wyświetlenie kolekcji w bazie danych MongoDB

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() Metoda
  • db.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_"
        }
    }
]


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB $gt Operator potoku agregacji

  2. Nie można uruchomić MongoDB. BŁĄD:adres jest już używany

  3. Nie udało się automatycznie skonfigurować DataSource:nie określono „spring.datasource.url”

  4. Konwertowanie zapisanej daty mongo z powrotem na milisekundy od epoki Uniksa po załadowaniu?

  5. Jak uniknąć ostrzeżenia transparent_hugepage/defrag z mongodb?