Làm thế nào để liệt kê tất cả các cơ sở dữ liệu trong vỏ mongo?


204

Tôi biết cách liệt kê tất cả các bộ sưu tập trong một cơ sở dữ liệu cụ thể , nhưng làm cách nào để liệt kê tất cả các cơ sở dữ liệu có sẵn trong trình bao MongoDB?


2
Đó là show dbstrong bảng điều khiển mongo, vui lòng đi qua useful linksphần trong wiki thẻ mongodb , trước khi đăng câu hỏi, đôi khi có thể giúp bạn tiếp cận giải pháp nhanh hơn.
Robert Christopher

Câu trả lời:


244

Liệt kê tất cả các cơ sở dữ liệu trong bảng điều khiển mongoDB đang sử dụng lệnh show dbs.

Để biết thêm thông tin về điều này, hãy tham khảo Trình trợ giúp Lệnh Mongo Shell có thể được sử dụng trong trình vỏ mongo.


15
Và đối với bất kỳ ai (như tôi) vừa cài đặt mongodb và bối rối rằng việc chạy dbcho thấy cơ sở dữ liệu hiện tại testnhưng điều này không được liệt kê qua bất kỳ comnmands nào trên trang này được giải thích ở đây stackoverflow.com/q/38726310/73226
Martin Smith

3
Làm thế nào trên trái đất bạn có thể đến được mặc dù: /
Jamie Hutber

2
@JamieHutber bạn có được shell bằng cách gõ mongovào dòng lệnh ( mongo --nodbđể không kết nối với cơ sở dữ liệu)
magikMaker

Vâng, tôi đã phải đến đây vì một điều đơn giản như show dbsvì khi tôi đi đến các tài liệu tôi chỉ đơn giản là không thể tìm thấy show dbslệnh ở bất cứ đâu. Các "tài liệu" đôi khi có thể khá bực bội.
MadHatter

Lệnh đó không hoạt động trong một --eval, chỉ trên một vỏ tương tác. Các tùy chọn của câu trả lời này không hoạt động (định dạng đầu ra là khác nhau) stackoverflow.com/a/32192253/1837991
Gert van den Berg

55

Đối với phiên bản shell MongoDB 3.0.5, hãy chèn lệnh sau vào trình bao:

db.adminCommand('listDatabases')

Hay cách khác:

db.getMongo().getDBNames()

2
nếu bạn ở trong vỏ bọc của mình và chỉ muốn tên: mongo admin --quiet -u <mongodb_admin> -p [<password>] --eval 'db.getMongo().getDBNames().forEach(function(db){print(db)})'hth
Boop

50

Đối với danh sách cơ sở dữ liệu:

show databases
show dbs

Đối với danh sách bảng / bộ sưu tập:

show collections
show tables
db.getCollectionNames()

31

Từ vấn đề dòng lệnh

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

cung cấp đầu ra

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

2
Giải pháp tốt nhất ở đây để chạy một cái gì đó tự động (không cần chuyển sang chế độ vỏ mongo trước)
herm

5

Để liệt kê cơ sở dữ liệu mongodb trên shell

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

Vài lệnh cơ bản hơn

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

Tôi đã tìm thấy một giải pháp, trong đó admin () / những người khác không làm việc.

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()
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.