Při používání MongoDB existuje více než jeden způsob, jak vypsat kolekce v databázi.
Zde jsou čtyři způsoby, jak získat seznam sbírek v databázi MongoDB:
- Položka
show collections
Příkaz - Položka
listCollections
Příkaz - Funkce
db.getCollectionNames()
Metoda - Prostředí
db.getCollectionInfos()
Metoda
Položka show collections
Příkaz
Pokud používáte mongo shell, nejrychlejší způsob, jak získat seznam kolekcí, je použít show collections
příkaz. Tento příkaz načte seznam kolekcí a pohledů v aktuální databázi.
Příklad:
show collections
Výsledek:
employees pets pettypes products system.views
V tomto případě existuje pět výsledků. Nemůžeme to zjistit pouhým pohledem, ale pettypes
je vlastně pohled. Ostatní jsou sbírky.
Soubor system.views
kolekce je systémová kolekce, která obsahuje informace o každém pohledu v databázi.
Skutečné vrácené sbírky budou záviset na vaší úrovni přístupu:
- U uživatelů s požadovaným přístupem
show collections
uvádí seznam nesystémových kolekcí pro databázi. - U uživatelů bez požadovaného přístupu
show collections
uvádí pouze kolekce, pro které mají uživatelé oprávnění.
listCollections
Příkaz
listCollections
administrativní příkaz vrátí název a volby kolekcí a pohledů v databázi. Vrací informace ve formě dokumentu.
Příklad:
db.runCommand( { listCollections: 1.0, authorizedCollections: true, nameOnly: true } )
Výsledek:
{ "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 obsahuje informace, pomocí kterých lze vytvořit kurzor na informace o kolekci.
Tentokrát se můžeme podívat, které jsou kolekce a které pohledy.
Příkaz můžeme také spustit takto:
db.runCommand( { listCollections: 1.0 } )
Tím získáte mnohem více informací o sbírkách. Viz db.getCollectionInfos()
příklad níže, abyste viděli data vrácená při takovém spuštění (db.getCollectionInfos()
metoda je obal kolem listCollections
).
db.getCollectionNames()
Metoda
db.getCollectionNames()
metoda vrací pole obsahující názvy všech kolekcí a pohledů v aktuální databázi, nebo pokud běží s řízením přístupu, názvy kolekcí podle oprávnění uživatele.
Příklad:
db.getCollectionNames()
Výsledek:
[ "employees", "pets", "pettypes", "products", "system.views" ]
Prostředí db.getCollectionInfos()
Metoda
db.getCollectionInfos()
metoda vrací pole dokumentů s informacemi o kolekci nebo zobrazení, jako je název a možnosti, pro aktuální databázi. Výsledky závisí na oprávnění uživatele.
Zde je příklad volání bez argumentů:
db.getCollectionInfos()
Výsledek:
[ { "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_" } } ]
Definice db.getCollectionInfos()
ve skutečnosti to vypadá takto:
db.getCollectionInfos(filter, nameOnly, authorizedCollections)
Můžeme tedy použít filter
parametr pro filtrování seznamu kolekcí na základě výrazu dotazu. To lze použít proti libovolnému poli vrácenému metodou.
Můžete také použít nameOnly
parametr, který určuje, že metoda by měla vracet pouze názvy kolekcí a pohledů.
authorizedCollections
parametr, když je nastaven na true
a používá se s nameOnly: true
, umožňuje uživateli bez požadovaného oprávnění (tj. akce listCollections v databázi) spustit příkaz, když je vynuceno řízení přístupu. V tomto případě příkaz vrátí pouze ty kolekce, pro které má uživatel oprávnění.
Příklad použití db.getCollectionInfos()
s těmito parametry:
db.getCollectionInfos( {}, true, true )
Výsledek:
[ { "name" : "employees", "type" : "collection" }, { "name" : "pets", "type" : "collection" }, { "name" : "pettypes", "type" : "view" }, { "name" : "products", "type" : "collection" }, { "name" : "system.views", "type" : "collection" } ]
Zde je jeden, kde jej filtruji pouze na konkrétní název:
db.getCollectionInfos( { name: "pets" }, true, true )
Výsledek:
[ { "name" : "pets", "type" : "collection" } ]
A toto se stane, když odstraním poslední dva argumenty:
db.getCollectionInfos( { name: "pets" } )
Výsledek:
[ { "name" : "pets", "type" : "collection", "options" : { }, "info" : { "readOnly" : false, "uuid" : UUID("91d1c6d8-8516-455d-a3c2-b157e1998f8c") }, "idIndex" : { "v" : 2, "key" : { "_id" : 1 }, "name" : "_id_" } } ]