Comment lister toutes les bases de données dans le shell mongo?


204

Je sais comment répertorier toutes les collections dans une base de données particulière , mais comment répertorier toutes les bases de données disponibles dans le shell MongoDB?


2
C'est show dbsdans la console mongo, veuillez parcourir la useful linkssection dans le wiki de balise mongodb , avant de poster une question, cela peut parfois vous aider à trouver une solution plus rapidement.
Robert Christopher

Réponses:


244

La liste de toutes les bases de données dans la console mongoDB utilise la commande show dbs.

Pour plus d'informations à ce sujet, reportez-vous aux assistants de commande du shell Mongo qui peuvent être utilisés dans le shell mongo.


15
Et pour quiconque (comme moi) qui vient d'installer mongodb et est confus que l'exécution dbmontre que la base de données actuelle est testmais cela n'est répertorié via aucun des commandes de cette page qui est expliquée ici stackoverflow.com/q/38726310/73226
Martin Smith


2
@JamieHutber vous obtenez tellement shell en tapant mongosur la ligne de commande (de mongo --nodbne pas vous connecter à une base de données)
magikMaker

Ouais, je devais venir ici pour quelque chose d'aussi simple que show dbsparce que quand je suis allé à la documentation, je ne pouvais tout simplement pas trouver la show dbscommande n'importe où. Les «documents» peuvent parfois être assez frustrants.
MadHatter

Cette commande ne fonctionne pas dans un --eval, juste sur un shell interactif. Les options de cette réponse fonctionnent (le format de sortie est cependant différent) stackoverflow.com/a/32192253/1837991
Gert van den Berg

55

Pour le shell MongoDB version 3.0.5, insérez la commande suivante dans le shell:

db.adminCommand('listDatabases')

Ou bien:

db.getMongo().getDBNames()

2
si vous êtes dans votre shell et ne voulez que des noms: mongo admin --quiet -u <mongodb_admin> -p [<password>] --eval 'db.getMongo().getDBNames().forEach(function(db){print(db)})'hth
Boop

50

Pour la liste des bases de données:

show databases
show dbs

Pour la liste des tables / collections:

show collections
show tables
db.getCollectionNames()

31

Depuis le problème de la ligne de commande

mongo --quiet --eval  "printjson(db.adminCommand('listDatabases'))"

ce qui donne une sortie

{
    "databases" : [
        {
            "name" : "admin",
            "sizeOnDisk" : 978944,
            "empty" : false
        },
        {
            "name" : "local",
            "sizeOnDisk" : 77824,
            "empty" : false
        },
        {
            "name" : "meteor",
            "sizeOnDisk" : 778240,
            "empty" : false
        }
    ],
    "totalSize" : 1835008,
    "ok" : 1
}

2
La meilleure solution ici pour exécuter quelque chose d'automatisé (sans passer d'abord en mode shell mongo)
herm

5

Pour répertorier la base de données mongodb sur le shell

 show databases     //Print a list of all available databases.
 show dbs   // Print a list of all databases on the server.

Quelques commandes plus basiques

use <db>    // Switch current database to <db>. The mongo shell variable db is set to the current database.
show collections    //Print a list of all collections for current database.
show users  //Print a list of users for current database.
show roles  //Print a list of all roles, both user-defined and built-in, for the current database.

0

J'ai trouvé une solution, où admin () / autres n'a pas fonctionné.

const { promisify } = require('util');
const exec = promisify(require('child_process').exec)
async function test() {
  var res = await exec('mongo  --eval "db.adminCommand( { listDatabases: 1 }         
)" --quiet')
  return { res }
}

test()
  .then(resp => {
    console.log('All dbs', JSON.parse(resp.res.stdout).databases)
  })
test()
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.