Bagaimana cara membuat daftar semua basis data di mongo shell?

204

Saya tahu cara mendaftar semua koleksi dalam database tertentu , tetapi bagaimana cara mendaftar semua database yang tersedia di shell MongoDB?

fracz
sumber
2
Itu ada show dbsdi konsol mongo, silakan buka useful linksbagian di wiki tag mongodb , sebelum mengirim pertanyaan, terkadang dapat membantu Anda mencapai solusi lebih cepat.
Robert Christopher

Jawaban:

244

Daftar semua database di konsol mongoDB menggunakan perintah show dbs.

Untuk informasi lebih lanjut tentang ini, lihat Pembantu Komando Shell Mongo yang dapat digunakan dalam shell mongo.

Robert Christopher
sumber
15
Dan bagi siapa pun (seperti saya) yang baru saja menginstal mongodb dan bingung menjalankan dbmenunjukkan database saat ini testtetapi ini tidak terdaftar melalui salah satu comnmand pada halaman ini yang dijelaskan di sini stackoverflow.com/q/38726310/73226
Martin Smith
3
Bagaimana Anda bisa sampai ke wajib sekalipun: /
Jamie Hutber
2
@JamieHutber Anda jadi shell dengan mengetik mongopada baris perintah ( mongo --nodbuntuk tidak terhubung ke database)
magikMaker
Ya saya harus datang ke sini untuk sesuatu yang sederhana show dbskarena saya ketika saya pergi ke docs saya tidak bisa menemukan show dbsperintah di mana pun. 'Dokumen' terkadang cukup membuat frustrasi.
MadHatter
Perintah itu tidak berfungsi dalam --eval, hanya pada shell interaktif. Opsi jawaban ini bekerja (format output berbeda) stackoverflow.com/a/32192253/1837991
Gert van den Berg
55

Untuk MongoDB shell versi 3.0.5 masukkan perintah berikut ke dalam shell:

db.adminCommand('listDatabases')

atau sebagai alternatif:

db.getMongo().getDBNames()
Carlos F. Enguix
sumber
2
jika Anda berada di shell Anda dan hanya ingin nama: mongo admin --quiet -u <mongodb_admin> -p [<password>] --eval 'db.getMongo().getDBNames().forEach(function(db){print(db)})'hth
Boop
50

Untuk daftar basis data:

show databases
show dbs

Untuk tabel / daftar koleksi:

show collections
show tables
db.getCollectionNames()
Amol Udage
sumber
31

Dari masalah baris perintah

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

yang memberikan hasil

{
    "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
sumber
2
Solusi terbaik di sini untuk menjalankan sesuatu yang otomatis (tanpa masuk ke mode mongo shell terlebih dahulu)
herm
5

Untuk daftar basis data mongodb pada shell

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

Lebih sedikit perintah dasar

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
sumber
0

Saya telah menemukan satu solusi, di mana admin () / lainnya tidak berfungsi.

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
sumber