859 votes

Comment puis-je lister toutes les collections dans le shell MongoDB ?

Dans le shell MongoDB, comment puis-je lister toutes les collections pour la base de données actuelle que j'utilise ?

1292voto

AdaTheDev Points 53358

Vous pouvez faire...

JavaScript (shell) :

db.getCollectionNames()

Node.js :

db.listCollections()

Non-JavaScript (shell uniquement) :

show collections

La raison pour laquelle j'appelle ça du non-JavaScript est 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 tu veux vraiment cette douce, douce show collections sortie, vous le pouvez :

$ mongo prodmongo/app --eval "db.getCollectionNames().join('\n')"
MongoDB shell version: 3.2.10
connecting to: prodmongo/app
Profiles
Unit_Info

0 votes

Fonctionnalité intéressante. Vous pouvez itérer dans le tableau des noms pour faire autre chose (par exemple, supprimer tous les éléments des collections).

8 votes

Pouvons-nous s'il vous plaît obtenir db.listCollections() comme la réponse présentée ici et cochée en vert ? Sinon, les gens font la même erreur que j'ai faite un nombre incalculable de fois lorsqu'ils arrivent à cette réponse - et tentent d'utiliser l'option db.getCollectionNames et l'erreur revient db.collectionNames is not a function .

455voto

Cameron Points 32208
> show collections

listera toutes les collections de la BD actuellement sélectionnée, comme indiqué dans l'aide de la ligne de commande ( help ).

2 votes

Vous ne pouvez pas utiliser la sortie show collections dans un script, mais on peut faire x=db.getCollectionNames() pour obtenir un tableau de tous les noms.

1 votes

Que signifient les deux chiffres indiqués après chaque collection ? Deux types de tailles ? content 1145.586MB / 1506.855MB par exemple.

0 votes

@Dan : Je n'ai pas utilisé MongoDB depuis un certain temps, mais je pense qu'il s'agit de la taille des données stockées dans la collection par rapport à la quantité totale allouée à cette collection (pour gérer les mises à jour mineures et la croissance sans avoir à réallouer constamment de l'espace pour le contenu entier de la collection).

289voto

user3640268 Points 441

Comment puis-je lister toutes les collections pour la base de données actuelle que j'utilise ?

Trois méthodes

  • show collections
  • show tables
  • db.getCollectionNames()

Pour énumérer tous les bases de données :

show dbs

Pour entrer ou utiliser une base de données donnée :

use databasename

Pour énumérer tous 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

1 votes

+1 pour la réponse la plus complète. illustrant show tables est très utile pour ceux qui viennent d'un environnement de dbms relationnel.

11 votes

Non, use est d'utiliser une base de données, rien à voir avec les collections

1 votes

Nous pouvons également utiliser db.collections

55voto

Kevin Meredith Points 4449

> show tables

Cela donne le même résultat que la réponse de Cameron.

33voto

Salvador Dali Points 11667

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 une autre méthode qui peut s'avérer très pratique si vous souhaitez 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()

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X