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 collectionsPříkaz - Položka
listCollectionsPří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 collectionsuvádí seznam nesystémových kolekcí pro databázi. - U uživatelů bez požadovaného přístupu
show collectionsuvá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_"
}
}
]