Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MongoDB

Cách lấy danh sách database MongoDB vào mảng JavaScript

Giới thiệu

Để lấy danh sách tất cả database trong MongoDB và lưu vào một mảng JavaScript, bạn sử dụng lệnh runCommand({ listDatabases: 1 }) trên database admin.

Quy trình thực hiện

1. Chuyển sang database admin

> use admin;
switched to db admin

2. Chạy listDatabases command

> var tatCaDatabase = db.runCommand({ listDatabases: 1 });

3. Kết quả trả về object chứa mảng databases

{
    "databases" : [
        { "name" : "admin", "sizeOnDisk" : 847872, "empty" : false },
        { "name" : "config", "sizeOnDisk" : 98304, "empty" : false },
        { "name" : "local", "sizeOnDisk" : 73728, "empty" : false },
        { "name" : "sample", "sizeOnDisk" : 1273856, "empty" : false },
        { "name" : "sampleDemo", "sizeOnDisk" : 352256, "empty" : false },
        { "name" : "studentSearch", "sizeOnDisk" : 262144, "empty" : false },
        { "name" : "test", "sizeOnDisk" : 9527296, "empty" : false }
    ],
    "totalSize" : 12435456,
    "ok" : 1
}

4. Trích xuất tên database vào mảng

> var tenDatabases = [];
> for (var i in tatCaDatabase.databases) { 
    tenDatabases.push(tatCaDatabase.databases[i].name); 
}

5. Kết quả mảng tên database

> tenDatabases;
[ "admin", "config", "local", "sample", "sampleDemo", "studentSearch", "test" ]

Cách viết gọn hơn (Modern JavaScript)

// Arrow function + map
const tenDatabases = tatCaDatabase.databases.map(db => db.name);

// Hoặc destructuring
const { databases } = db.runCommand({ listDatabases: 1 });
const tenDatabases = databases.map(({ name }) => name);

Sử dụng trong script MongoDB Shell

// File: list_dbs.js
use admin;
const { databases } = db.runCommand({ listDatabases: 1 });
const dbNames = databases.map(({ name, sizeOnDisk, empty }) => ({ name, sizeOnDisk, empty }));

print("Danh sách database:");
dbNames.forEach(db => {
    print(`${db.name} - ${(db.sizeOnDisk / 1024 / 1024).toFixed(2)} MB - ${db.empty ? 'Empty' : 'Has data'}`);
});

Chạy: mongo list_dbs.js

Lưu ý

  • Phải chạy trên database admin
  • Yêu cầu quyền listDatabases (builtin role: clusterMonitor hoặc root)
  • Database local và config là system databases
  • Kích thước sizeOnDisk tính bằng bytes

Trong Application (Node.js driver)

const adminDb = client.db('admin');
const result = await adminDb.command({ listDatabases: 1 });
const dbNames = result.databases.map(db => db.name);