Quando si utilizza MongoDB, c'è più di un modo per elencare le raccolte in un database.
Ecco quattro modi per ottenere un elenco di raccolte in un database MongoDB:
- Il
show collections
Comando - Il
listCollections
Comando - Il
db.getCollectionNames()
Metodo - Il
db.getCollectionInfos()
Metodo
Il show collections
Comando
Se stai utilizzando mongo shell, il modo più rapido per ottenere un elenco di raccolte è utilizzare show collections
comando. Questo comando recupera un elenco di raccolte e viste nel database corrente.
Esempio:
show collections
Risultato:
employees pets pettypes products system.views
In questo caso, ci sono cinque risultati. Non possiamo dirlo solo guardandolo, ma pettypes
è in realtà una vista. Gli altri sono raccolte.
Il system.views
raccolta è una raccolta di sistema che contiene informazioni su ciascuna vista nel database.
Gli incassi effettivi restituiti dipenderanno dal tuo livello di accesso:
- Per gli utenti con l'accesso richiesto,
show collections
elenca le raccolte non di sistema per il database. - Per gli utenti senza l'accesso richiesto,
show collections
elenca solo le raccolte per le quali gli utenti hanno privilegi.
Il listCollections
Comando
Le listCollections
Il comando amministrativo restituisce il nome e le opzioni delle raccolte e delle viste nel database. Restituisce le informazioni sotto forma di documento.
Esempio:
db.runCommand( { listCollections: 1.0, authorizedCollections: true, nameOnly: true } )
Risultato:
{ "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 }
Il documento contiene informazioni con cui creare un cursore sulle informazioni della raccolta.
Questa volta possiamo vedere quali sono raccolte e quali visualizzazioni.
Possiamo anche eseguire il comando in questo modo:
db.runCommand( { listCollections: 1.0 } )
Ciò fornisce molte più informazioni sulle raccolte. Vedi db.getCollectionInfos()
esempio di seguito per vedere i dati restituiti durante l'esecuzione in questo modo (il db.getCollectionInfos()
è un wrapper di listCollections
).
Il db.getCollectionNames()
Metodo
Il db.getCollectionNames()
restituisce un array contenente i nomi di tutte le raccolte e viste nel database corrente o, se in esecuzione con controllo di accesso, i nomi delle raccolte in base al privilegio dell'utente.
Esempio:
db.getCollectionNames()
Risultato:
[ "employees", "pets", "pettypes", "products", "system.views" ]
Il db.getCollectionInfos()
Metodo
Il db.getCollectionInfos()
restituisce una matrice di documenti con informazioni sulla raccolta o sulla visualizzazione, come nome e opzioni, per il database corrente. I risultati dipendono dal privilegio dell'utente.
Ecco un esempio di come chiamarlo senza argomenti:
db.getCollectionInfos()
Risultato:
[ { "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_" } } ]
La definizione di db.getCollectionInfos()
in realtà va così:
db.getCollectionInfos(filter, nameOnly, authorizedCollections)
Quindi possiamo usare il filter
parametro per filtrare l'elenco di raccolte in base a un'espressione di query. Questo può essere applicato a qualsiasi campo restituito dal metodo.
Puoi anche usare nameOnly
parametro per specificare che il metodo deve restituire solo i nomi delle raccolte e delle viste.
Le authorizedCollections
parametro, se impostato su true
e usato con nameOnly: true
, consente a un utente senza il privilegio richiesto (ovvero l'azione listCollections sul database) di eseguire il comando quando viene applicato il controllo di accesso. In questo caso, il comando restituisce solo le raccolte per le quali l'utente dispone dei privilegi.
Esempio di utilizzo di db.getCollectionInfos()
con questi parametri:
db.getCollectionInfos( {}, true, true )
Risultato:
[ { "name" : "employees", "type" : "collection" }, { "name" : "pets", "type" : "collection" }, { "name" : "pettypes", "type" : "view" }, { "name" : "products", "type" : "collection" }, { "name" : "system.views", "type" : "collection" } ]
Eccone uno in cui lo filtro solo in base a un nome specifico:
db.getCollectionInfos( { name: "pets" }, true, true )
Risultato:
[ { "name" : "pets", "type" : "collection" } ]
Ed ecco cosa succede quando rimuovo gli ultimi due argomenti:
db.getCollectionInfos( { name: "pets" } )
Risultato:
[ { "name" : "pets", "type" : "collection", "options" : { }, "info" : { "readOnly" : false, "uuid" : UUID("91d1c6d8-8516-455d-a3c2-b157e1998f8c") }, "idIndex" : { "v" : 2, "key" : { "_id" : 1 }, "name" : "_id_" } } ]