Nella shell MongoDB, come posso elencare tutte le raccolte per il database corrente che sto usando?
Nella shell MongoDB, come posso elencare tutte le raccolte per il database corrente che sto usando?
Risposte:
Tu puoi fare...
JavaScript (shell):
db.getCollectionNames()
Node.js:
db.listCollections()
Non JavaScript (solo shell):
show collections
Il motivo per cui lo chiamo non JavaScript è 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 quella dolce, dolce show collections
uscita, puoi:
$ mongo prodmongo/app --eval "db.getCollectionNames().join('\n')"
MongoDB shell version: 3.2.10
connecting to: prodmongo/app
Profiles
Unit_Info
db.listCollections()
la risposta mostrata qui e contrassegnata in verde? Altrimenti le persone commettono lo stesso errore che ho fatto innumerevoli volte quando arrivano a questa risposta - e tentano di usare db.getCollectionNames
e l'errore ritorna db.collectionNames is not a function
.
db.getCollectionNames()
è ancora la risposta giusta per la shell.
> show collections
elencherà tutte le raccolte nel DB attualmente selezionato, come indicato nella guida della riga di comando ( help
).
content 1145.586MB / 1506.855MB
per esempio.
Come posso elencare tutte le raccolte per il database corrente che sto usando?
show collections
show tables
db.getCollectionNames()
show dbs
use databasename
show collections
Produzione:
collection1 collection2 system.indexes
(o)
show tables
Produzione:
collection1 collection2 system.indexes
(o)
db.getCollectionNames()
Produzione:
[ "collection1", "collection2", "system.indexes" ]
use collectionname
show tables
è abbastanza utile per coloro che provengono da uno sfondo di dbms relazionali.
use
è usare un database, niente a che fare con le raccolte
> show tables
Dà lo stesso risultato della risposta di Cameron.
Oltre alle 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 raccolte (ad esempio, è una raccolta limitata con una dimensione particolare):
db.system.namespaces.find()
Per prima cosa devi usare 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 visualizzare tutte le raccolte nel database MongoDB è
show collections
Prima di eseguire il show collections
comando è necessario selezionare il database:
use mydb // mydb is the name of the database being selected
Per visualizzare tutti i database, è possibile utilizzare il comando
show dbs // Shows all the database names present
Per ulteriori informazioni, visitare la sezione Introduzione .
Se vuoi mostrare tutte le raccolte dalla shell MongoDB (riga di comando), usa l'helper della shell,
show collections
che mostra tutte le raccolte per il database corrente. Se si desidera ottenere tutti gli elenchi di raccolte dall'applicazione, è possibile utilizzare il metodo del database MongoDB
db.getCollectionNames()
Per ulteriori informazioni sull'helper della shell MongoDB, è possibile consultare la mongo
Guida rapida di 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 generale:
Ecco come lo faresti:
db.getCollectionNames().forEach(function(collection) {
indexes = db[collection].getIndexes();
print("Indexes for " + collection + ":");
printjson(indexes);
});
Tra i tre comandi e questo frammento, dovresti essere ben coperto!
Penso che una delle maggiori confusioni sia la differenza tra ciò che si può fare con 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 che cosa potresti fare altrimenti con i 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 one-liner. (Ma sembra terribile su Stack Overflow.)
mongo --eval "db.getMongo().getDBNames().forEach(function(v, i){print(v+'\n\t'+db.getSiblingDB(v).getCollectionNames().join('\n\t'))})"
Su> = 2.x, puoi farlo
db.listCollections()
Su 1.x puoi fare
db.getCollectionNames()
db.getCollectionNames()
ottengo [ "users" ]
perché ho una raccolta di utenti. Se provo db.listCollections()
, il risultato è[thread1] TypeError: db.listCollections is not a function : @(shell):1:1
Elencare tutte le raccolte dalla mongo
shell:
- db.getCollectionNames ()
- mostra raccolte
- mostra tabelle
Nota: le raccolte mostreranno dal database corrente in cui ci si trova attualmente
Per passare al database.
Di:
utilizzare l' esempio {nome_database_del} :
use friends
dov'è friends
il nome del tuo database.
Allora scrivi:
db.getCollectionNames()
show collections
Questo ti darà il nome delle collezioni.
> show dbs
anuradhfirst 0.000GB
local 0.000GB
> use anuradhfirst
switched to db anuradhfirst
> show collections
record
mongo
. Questo avvierà la connessione.show dbs
comando. Questo mostrerà tutti i database in uscita / disponibili.database
desiderato. Quanto sopra lo è anuradhfirst
. Quindi corri use anuradhfirst
. Questo passerà al database desiderato.show collections
comando. Questo mostrerà tutto collections
all'interno del database selezionato.mostra raccolte
Questo comando di solito funziona sulla shell MongoDB dopo essere passati al database.
Per le distribuzioni MongoDB 3.0 che utilizzano il motore di archiviazione WiredTiger, se si esegue
db.getCollectionNames()
da una versione della shell mongo precedente alla 3.0 o una versione del driver precedente alla versione 3.0 compatibile, nondb.getCollectionNames()
verranno restituiti dati, anche se sono presenti raccolte esistenti.
Per ulteriori dettagli, fare riferimento a questo .
show collections
o
show tables
o
db.getCollectionNames();
Uso listCollections
(supporta MongoDB 3.0 e versioni successive) per questo scopo.
Esempio:
db.runCommand({ listCollections: 1, filter: {}, nameOnly: true });
Per recuperare ulteriori informazioni come l'indice della raccolta:
db.runCommand({ listCollections: 1, filter: {}, nameOnly: false });
Per stampare solo i nomi delle raccolte:
db.runCommand({ listCollections: 1, filter: {}, nameOnly: true }).cursor.firstBatch.forEach(v => {print(v.name)})
Ritengo che ciò offra maggiore flessibilità.
Per saperne di più: listCollections
1. show collections; // Display all collections
2. show tables // Display all collections
3. db.getCollectionNames(); // Return array of collection. Example :[ "orders", "system.profile" ]
Informazioni dettagliate per ogni collezione:
db.runCommand( { listCollections: 1.0, authorizedCollections: true, nameOnly: true } )
Per elencare l'elenco delle raccolte in base a una stringa di ricerca.
db.getCollectionNames().filter(function (CollectionName) { return /<Search String>/.test(CollectionName) })
Esempio: trova tutta la raccolta con "importazione" nel nome
db.getCollectionNames().filter(function (CollectionName) { return /import/.test(CollectionName) })
Utilizzare il seguente comando dalla mongo
shell:
show collections