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

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.

Robert Christopher
la source
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
3
Comment
diable arrivez-vous au must
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()
Carlos F. Enguix
la source
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()
Amol Udage
la source
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
}
Scott Stensland
la source
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.
Amitesh
la source
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()
Rohit Parte
la source