Dans le shell MongoDB, comment répertorier toutes les collections de la base de données actuelle que j'utilise?
Dans le shell MongoDB, comment répertorier toutes les collections de la base de données actuelle que j'utilise?
Réponses:
Tu peux faire...
JavaScript (shell):
db.getCollectionNames()
Node.js:
db.listCollections()
Non JavaScript (shell uniquement):
show collections
La raison pour laquelle j'appelle cela non JavaScript est parce que:
$ 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"
]
Si vous voulez vraiment cette show collections
sortie douce et sucrée , vous pouvez:
$ mongo prodmongo/app --eval "db.getCollectionNames().join('\n')"
MongoDB shell version: 3.2.10
connecting to: prodmongo/app
Profiles
Unit_Info
db.listCollections()
la réponse indiquée ici et cochée en vert? Sinon, les gens font la même erreur que j'ai fait un nombre incalculable de fois quand ils arrivent à cette réponse - et tentent d'utiliser db.getCollectionNames
et l'erreur revient db.collectionNames is not a function
.
db.getCollectionNames()
est toujours la bonne réponse pour le shell.
> show collections
répertorie toutes les collections dans la base de données actuellement sélectionnée, comme indiqué dans l'aide en ligne de commande ( help
).
content 1145.586MB / 1506.855MB
par exemple.
Comment répertorier toutes les collections de la base de données actuelle que j'utilise?
show collections
show tables
db.getCollectionNames()
show dbs
use databasename
show collections
Production:
collection1 collection2 system.indexes
(ou)
show tables
Production:
collection1 collection2 system.indexes
(ou)
db.getCollectionNames()
Production:
[ "collection1", "collection2", "system.indexes" ]
use collectionname
show tables
est très utile pour ceux qui viennent d'un arrière-plan dbms relationnel.
use
c'est d'utiliser une base de données, rien à voir avec les collections
> show tables
Cela donne le même résultat que la réponse de Cameron.
Outre les options suggérées par d'autres personnes:
show collections // Output every collection
show tables
db.getCollectionNames() // Shows all collections as a list
Il existe également une autre méthode qui peut être très pratique si vous voulez savoir comment chacune des collections a été créée (par exemple, c'est une collection plafonnée avec une taille particulière):
db.system.namespaces.find()
Vous devez d'abord utiliser une base de données pour afficher toutes les collections / tables à l'intérieur.
>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
Vous pouvez utiliser show tables
ou show collections
.
Essayer:
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
La commande utilisée pour afficher toutes les collections de la base de données MongoDB est
show collections
Avant d'exécuter la show collections
commande, vous devez sélectionner la base de données:
use mydb // mydb is the name of the database being selected
Pour voir toutes les bases de données, vous pouvez utiliser la commande
show dbs // Shows all the database names present
Pour plus d'informations, consultez la section Mise en route .
Si vous souhaitez afficher toutes les collections du shell MongoDB (ligne de commande), utilisez l'assistant shell,
show collections
qui affiche toutes les collections de la base de données actuelle. Si vous souhaitez obtenir toutes les listes de collecte de votre application, vous pouvez utiliser la méthode de base de données MongoDB
db.getCollectionNames()
Pour plus d'informations sur l'aide du shell MongoDB, vous pouvez consulter le mongo
Guide de référence rapide du shell .
Les commandes suivantes sur mongoshell sont courantes.
show databases
show collections
Aussi,
show dbs
use mydb
db.getCollectionNames()
Parfois, il est utile de voir toutes les collections ainsi que les index des collections qui font partie de l'espace de noms global:
Voici comment procéder:
db.getCollectionNames().forEach(function(collection) {
indexes = db[collection].getIndexes();
print("Indexes for " + collection + ":");
printjson(indexes);
});
Entre les trois commandes et cet extrait, vous devriez être bien couvert!
Je pense que l'une des plus grandes confusions est la différence entre ce que vous pouvez faire avec mongo
(ou un shell interactif / hybride) et mongo --eval
(ou un shell JavaScript pur). Je garde ces documents utiles à portée de main:
Voici un exemple de script de ce que vous pourriez faire autrement avec les show
commandes:
# 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')
)
}
)
"
Remarque: cela fonctionne très bien comme une ligne. (Mais ça a l'air terrible sur Stack Overflow.)
mongo --eval "db.getMongo().getDBNames().forEach(function(v, i){print(v+'\n\t'+db.getSiblingDB(v).getCollectionNames().join('\n\t'))})"
Sur> = 2.x, vous pouvez faire
db.listCollections()
Sur 1.x, vous pouvez le faire
db.getCollectionNames()
db.getCollectionNames()
j'obtiens [ "users" ]
parce que j'ai une collection d'utilisateurs. Si j'essaye, db.listCollections()
cela se traduit par[thread1] TypeError: db.listCollections is not a function : @(shell):1:1
Liste toutes les collections du mongo
shell:
- db.getCollectionNames ()
- montrer les collections
- montrer les tables
Remarque: les collections montreront à partir de la base de données actuelle où vous vous trouvez actuellement
Pour passer à la base de données.
Par:
utilisez l' exemple {your_database_name} :
use friends
où friends
est le nom de votre base de données.
Puis écrire:
db.getCollectionNames()
show collections
Cela vous donnera le nom des collections.
> show dbs
anuradhfirst 0.000GB
local 0.000GB
> use anuradhfirst
switched to db anuradhfirst
> show collections
record
mongo
. Cela va démarrer la connexion.show dbs
commande. Cela vous montrera toutes les bases de données existantes / disponibles.database
vous souhaitez. Dans ce qui précède, c'est anuradhfirst
. Ensuite, courez use anuradhfirst
. Cela basculera vers la base de données souhaitée.show collections
commande. Cela montrera tout l' collections
intérieur de votre base de données sélectionnée.montrer les collections
Cette commande fonctionne généralement sur le shell MongoDB une fois que vous êtes passé à la base de données.
Pour les déploiements MongoDB 3.0 utilisant le moteur de stockage WiredTiger, si vous exécutez à
db.getCollectionNames()
partir d'une version du shell mongo avant 3.0 ou d'une version du pilote antérieure à la version compatible 3.0,db.getCollectionNames()
ne retournera aucune donnée, même s'il existe des collections existantes.
Pour plus de détails, s'il vous plaît se référer à ce .
show collections
ou
show tables
ou
db.getCollectionNames();
J'utilise listCollections
(supporte MongoDB 3.0 et supérieur) à cet effet.
Exemple:
db.runCommand({ listCollections: 1, filter: {}, nameOnly: true });
Pour récupérer plus d'informations comme l'index de la collection:
db.runCommand({ listCollections: 1, filter: {}, nameOnly: false });
Pour imprimer uniquement les noms de collection:
db.runCommand({ listCollections: 1, filter: {}, nameOnly: true }).cursor.firstBatch.forEach(v => {print(v.name)})
Je pense que cela offre plus de flexibilité.
En savoir plus: listCollections
1. show collections; // Display all collections
2. show tables // Display all collections
3. db.getCollectionNames(); // Return array of collection. Example :[ "orders", "system.profile" ]
Informations détaillées pour chaque collection:
db.runCommand( { listCollections: 1.0, authorizedCollections: true, nameOnly: true } )
Pour répertorier la liste des collections en fonction d'une chaîne de recherche.
db.getCollectionNames().filter(function (CollectionName) { return /<Search String>/.test(CollectionName) })
Exemple: Rechercher toutes les collections ayant "import" dans le nom
db.getCollectionNames().filter(function (CollectionName) { return /import/.test(CollectionName) })
Utilisez la commande suivante à partir du mongo
shell:
show collections