Comment afficher la liste de toutes les collections dans le shell mongo?
-
28-10-2019 - |
Question
Dans la MongoDB shell, comment faire la liste de toutes les collections de la base de données actuelle que j'utilise?
La solution
Vous pouvez le faire...
JS (shell):
db.getCollectionNames()
node.js:
db.listCollections()
non-JS (coque):
show collections
La raison pour laquelle je l'appel que les non-JS c'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 doux show collections
de sortie, vous pouvez:
$ mongo prodmongo/app --eval "db.getCollectionNames().join('\n')"
MongoDB shell version: 3.2.10
connecting to: prodmongo/app
Profiles
Unit_Info
Autres conseils
> show collections
listera toutes les collections de la base de données actuellement sélectionnée, comme indiqué dans l'aide de la ligne de commande (help
).
Comment répertorier toutes les collections de la base de données actuelle que j'utilise?
3 méthodes
-
show collections
-
show tables
-
db.getCollectionNames()
Pour lister toutes les bases de données :
show dbs
Pour entrer ou utiliser une base de données donnée:
use databasename
Pour lister toutes les collections :
show collections
Sortie:
collection1 collection2 system.indexes
(ou)
show tables
Sortie:
collection1 collection2 system.indexes
(ou)
db.getCollectionNames()
Sortie:
[ "collection1", "collection2", "system.indexes" ]
Pour entrer ou utiliser une collection donnée
use collectionname
> show tables
Cela donne le même résultat que la réponse de Cameron.
En dehors des 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 un autre moyen qui peut être très pratique si vous voulez savoir comment chacune des collections a été créée (par exemple, il s'agit d'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 qu'elle contient.
>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
Essayez:
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 toute la collection dans la base de données mongoDb est
show collections
Avant d'exécuter la commande show collections, 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, visitez ce lien: http://docs.mongodb.org/manual/tutorial/getting-started /
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 toute la liste des collections de votre application, vous pouvez utiliser la méthode de base de données mongodb
db.getCollectionNames()
Pour plus d'informations, l'assistant de shell mongodb vous pouvez voir http://docs.mongodb.org/manual/reference/mongo-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 3 commandes et cet extrait de code, 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 commandes show
:
# 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 oneliner.(Mais ça a l'air terrible sur StackOverflow.)
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 faire
db.getCollectionNames()
Pour basculer vers la base de données. par:- utilisez l'exemple {your_database_name} :
use friends
où amis est le nom de votre base de données.
puis écrivez: -
db.getCollectionNames()
show collections
cela vous donnera le nom des collections.
Répertorier toutes les collections du shell mongo:
- db.getCollectionNames ()
- afficher les collections
- afficher les tableaux
Remarque: les collections s'afficheront à partir de la base de données actuelle dans laquelle vous vous trouvez actuellement
> show dbs
anuradhfirst 0.000GB
local 0.000GB
> use anuradhfirst
switched to db anuradhfirst
> show collections
record
- connectez-vous à la base de données mongo en utilisant
mongo
, cela démarrera la connexion. - puis exécutez la commande
show dbs
, cela vous montrera toutes les bases de données existantes / disponibles. - puis sélectionnez le
database
que vous voulez. Au-dessus, c'estanuradhfirst
, puis exécutezuse anuradhfirst
.this basculera vers la base de données souhaitée. - puis exécutez la commande
show collections
, cela affichera tout lecollections
dans votre base de données sélectionnée.
afficher les collections
cette commande fonctionne généralement sur mongo shell 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 la version 3.0 ou une version du pilote antérieure à la version compatible 3.0,db.getCollectionNames()
ne renverra aucune donnée, même s'il y a collections existantes.
Pour plus de détails, veuillez consulter ceci
1. show collections; //Display all collection
2. show tables //Display all collection
3. db.getCollectionNames(); // Retuen array of collection Example :[ "orders", "system.profile" ]
Informations détaillées sur chaque collection
db.runCommand( { listCollections: 1.0, authorizedCollections: true, nameOnly: true } )
- Pour les utilisateurs disposant de l'accès requis (privilèges qui accordent listCollections sur la base de données), la méthode liste les noms de toutes les collections de la base de données.
- Pour les utilisateurs sans accès requis, la méthode répertorie uniquement les collections pour lesquelles les utilisateurs ont des privilèges.Par exemple, si un l'utilisateur a trouvé sur une collection spécifique dans une base de données, la méthode retournerait juste cette collection.
J'utilise listCollections
(prend en charge mongo 3.0 et plus) à cette fin.
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 des collections:
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: https://docs.mongodb.com/manual/reference/ command / listCollections /
utilisez la commande suivante du shell mongo: - afficher les collections