Come elencare tutte le raccolte nella shell di Mongo?
-
28-10-2019 - |
Domanda
Nella shell MongoDB, come posso elencare tutte le raccolte per il database corrente che sto usando?
Soluzione
Tu puoi fare...
JS (Shell):
db.getCollectionNames()
node.js:
db.listCollections()
non JS (solo shell):
show collections
Il motivo per cui lo chiamo non JS è perché:
$ mongo prodmongo/app --eval "show collections"
MongoDB shell version: 3.2.10
connecting to: prodmongo/app
2016-10-26T19:34:34.886-0400 E QUERY [thread1] SyntaxError: missing ; before statement @(shell eval):1:5
$ mongo prodmongo/app --eval "db.getCollectionNames()"
MongoDB shell version: 3.2.10
connecting to: prodmongo/app
[
"Profiles",
"Unit_Info"
]
Se vuoi davvero così dolce, dolce show collections
output, puoi:
$ mongo prodmongo/app --eval "db.getCollectionNames().join('\n')"
MongoDB shell version: 3.2.10
connecting to: prodmongo/app
Profiles
Unit_Info
Altri suggerimenti
> show collections
Elencherà tutte le raccolte nel DB attualmente selezionato, come indicato nella guida della riga di comando (help
).
Come posso elencare tutte le raccolte per il database corrente che sto usando?
3 metodi
show collections
show tables
db.getCollectionNames()
Per elencare tutto banche dati:
show dbs
Per inserire o utilizzare il database fornito:
use databasename
Per elencare tutto collezioni:
show collections
Produzione:
collection1 collection2 system.indexes
(o)
show tables
Produzione:
collection1 collection2 system.indexes
(o)
db.getCollectionNames()
Produzione:
[ "collection1", "collection2", "system.indexes" ]
Per inserire o utilizzare la raccolta data
use collectionname
> show tables
Dà lo stesso risultato alla risposta di Cameron.
A parte le opzioni suggerite da altre persone:
show collections //output every collection
show tables
db.getCollectionNames() //shows all collections as a list
C'è anche un altro modo che può essere davvero utile se vuoi sapere come è stata creata ciascuna delle collezioni (ad esempio è una raccolta limitata con una dimensione particolare)
db.system.namespaces.find()
Per prima cosa è necessario utilizzare un database per mostrare tutte le raccolte/tabelle al suo interno.
>show dbs
users 0.56787GB
test (empty)
>db.test.help() // this will give you all the function which can be used with this db
>use users
>show tables //will show all the collection in the db
Puoi usare show tables
o show collections
Provare:
help // To show all help methods
show dbs // To show all dbs
use dbname // To select your db
show collections // To show all collections in selected db
Il comando utilizzato per la visualizzazione di tutta la raccolta nel database MongoDB è
show collections
Prima di eseguire il comando Show Collections è necessario selezionare il database
use mydb //mydb is the name of the database being selected
Per vedere tutti i database è possibile utilizzare il comando
show dbs // shows all the database names present
Per ulteriori informazioni, visitare questo link: http://docs.mongodb.org/manual/tutorial/getting-started/
Se si desidera mostrare tutte le raccolte da MongoDB Shell (riga di comando), usa Shell Helper
show collections
che mostrano tutte le raccolte per il database corrente. Se si desidera ottenere tutto l'elenco di raccolta dalla tua applicazione, puoi utilizzare il metodo del database MongoDB
db.getCollectionNames()
Per maggiori informazioni Helper Shell MongoDB puoi vederehttp://docs.mongodb.org/manual/reference/mongo-shell/
I seguenti comandi su Mongoshell sono comuni
show databases
show collections
Anche,
show dbs
use mydb
db.getCollectionNames()
A volte è utile vedere tutte le raccolte e gli indici sulle raccolte che fanno parte dello spazio dei nomi complessivi:
Ecco come lo faresti:
db.getCollectionNames().forEach(function(collection) {
indexes = db[collection].getIndexes();
print("Indexes for " + collection + ":");
printjson(indexes);
});
Tra i 3 comandi e questo frammento dovresti essere ben coperto!
Penso che una delle più grandi confusioni sia la differenza tra ciò che puoi fare mongo
(o una shell interattiva/ibrida) vs. mongo --eval
(o una shell javascript pura). Tengo a portata di mano questi documenti utili:
Ecco un esempio di scripting di cosa potresti fare altrimenti show
Comandi:
# List all databases and the collections in them
mongo --eval "
db.getMongo().getDBNames().forEach(
function(v, i){
print(
v + '\n\t' +
db.getSiblingDB(v).getCollectionNames().join('\n\t')
)
}
)
"
Nota: funziona davvero bene come Oneliner. (Ma sembra terribile su Stackoverflow.)
mongo --eval "db.getMongo().getDBNames().forEach(function(v, i){print(v+'\n\t'+db.getSiblingDB(v).getCollectionNames().join('\n\t'))})"
On> = 2.x, puoi farlo
db.listCollections()
Su 1.x puoi fare
db.getCollectionNames()
Per passare al database. di:-usa {your_database_name} esempio:
use friends
Dove gli amici sono il nome del tuo database.
allora scrivi:-
db.getCollectionNames()
show collections
Questo ti darà il nome delle collezioni.
Elenca tutte le raccolte dalla shell di Mongo:
- db.getCollectionNames ()
- Mostra collezioni
- mostra i tavoli
Nota: le raccolte verranno visualizzate dal database corrente in cui si trova attualmente
> show dbs
anuradhfirst 0.000GB
local 0.000GB
> use anuradhfirst
switched to db anuradhfirst
> show collections
record
- Connettiti con il database Mongo utilizzando
mongo
, questo inizierà la connessione. - Quindi corri
show dbs
Comando, questo mostrerà tutto il database uscita/disponibile. - Quindi selezionare il
database
vuoi.in sopra lo èanuradhfirst
, Quindi corriuse anuradhfirst
. Questo passerà al database desiderato. - Quindi corri
show collections
comando, questo mostrerà tutto ilcollections
All'interno del database selezionato.
Mostra collezioni
Questo comando di solito funziona su Mongo Shell una volta che è passato al database.
Per le distribuzioni MongoDB 3.0 utilizzando il motore di archiviazione WiredTiger, se si esegue
db.getCollectionNames()
Da una versione della shell Mongo prima di 3.0 o una versione del driver prima della versione compatibile 3.0,db.getCollectionNames()
non restituirà dati, anche se ci sono raccolte esistenti.
Per ulteriori dettagli, fare riferimento a questo
1. show collections; //Display all collection
2. show tables //Display all collection
3. db.getCollectionNames(); // Retuen array of collection Example :[ "orders", "system.profile" ]
Dettagli informazioni su ogni raccolta
db.runCommand( { listCollections: 1.0, authorizedCollections: true, nameOnly: true } )
- Per gli utenti con l'accesso richiesto (privilegi che concedono l'azione di ListCollections nel database), il metodo elenca i nomi di tutte le raccolte per il database.
- Per gli utenti senza l'accesso richiesto, il metodo elenca solo le raccolte per le quali gli utenti hanno privilegi. Ad esempio, se un utente ha trovato su una raccolta specifica in un database, il metodo restituirebbe proprio quella raccolta.
Io uso listCollections
(Supporta Mongo 3.0 e in su) A questo scopo.
esempio:
db.runCommand({ listCollections: 1, filter: {}, nameOnly: true });
Per recuperare maggiori informazioni come l'indice della raccolta:
db.runCommand({ listCollections: 1, filter: {}, nameOnly: false });
Per stampare solo i nomi della raccolta:
db.runCommand({ listCollections: 1, filter: {}, nameOnly: true }).cursor.firstBatch.forEach(v => {print(v.name)})
Sento che questo fornisce maggiore flessibilità.
leggi di più: https://docs.mongodb.com/manual/reference/command/listcollections/
Usa il seguente comando da Mongo Shell:- Mostra collezioni