Jak wyświetlić listę wszystkich baz danych w powłoce mangowej?

204

Wiem, jak wyświetlić listę wszystkich kolekcji w określonej bazie danych , ale jak wyświetlić listę wszystkich dostępnych baz danych w powłoce MongoDB?

fracz
źródło
2
To show dbsw konsoli Mongo, proszę przejść do useful linkssekcji w MongoDB tag wiki , przed wysłaniem pytanie, może czasami pomóc osiągnąć rozwiązanie szybciej.
Robert Christopher

Odpowiedzi:

244

Lista wszystkich baz danych w konsoli mongoDB korzysta z polecenia show dbs.

Aby uzyskać więcej informacji na ten temat, zapoznaj się z Pomocnikami poleceń powłoki Mongo , których można użyć w powłoce mongo.

Robert Christopher
źródło
15
I dla każdego (takiego jak ja), który właśnie zainstalował mongodb i jest zdezorientowany, że uruchomione dbpokazuje, że bieżąca baza danych jest, testale nie jest wymieniona za pomocą żadnego z poleceń na tej stronie, które są wyjaśnione tutaj stackoverflow.com/q/38726310/73226
Martin Smith,
3
Ale jak, do
diabła, docierasz do płyt
2
@JamieHutber dostajesz taką powłokę, pisząc mongow wierszu poleceń ( mongo --nodbaby nie łączyć się z bazą danych)
magikMaker
Tak, musiałem tu przyjechać po coś tak prostego, jak show dbsdlatego, że kiedy poszedłem do dokumentów, po prostu show dbsnigdzie nie mogłem znaleźć polecenia. „Dokumenty” mogą być czasami frustrujące.
MadHatter
To polecenie nie działa --evaltylko w interaktywnej powłoce. Opcje tej odpowiedzi działają (chociaż format wyjściowy jest inny) stackoverflow.com/a/32192253/1837991
Gert van den Berg
55

W przypadku powłoki MongoDB w wersji 3.0.5 wstaw do powłoki następujące polecenie:

db.adminCommand('listDatabases')

lub alternatywnie:

db.getMongo().getDBNames()
Carlos F. Enguix
źródło
2
jeśli jesteś w swojej skorupce i chcesz tylko nazwy: mongo admin --quiet -u <mongodb_admin> -p [<password>] --eval 'db.getMongo().getDBNames().forEach(function(db){print(db)})'hth
Boop
50

Dla listy baz danych:

show databases
show dbs

W przypadku tabeli / listy kolekcji:

show collections
show tables
db.getCollectionNames()
Amol Udage
źródło
31

Z wydania wiersza poleceń

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

co daje wynik

{
    "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
źródło
2
Najlepsze rozwiązanie tutaj do uruchamiania czegoś zautomatyzowanego (bez przechodzenia najpierw w tryb powłoki mangowej)
herm
5

Aby wyświetlić bazę danych mongodb w powłoce

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

Kilka bardziej podstawowych poleceń

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
źródło
0

Znalazłem jedno rozwiązanie, w którym admin () / inne nie działały.

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
źródło