Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MongoDB

วิธีจัดการทุก Database จาก MongoDB Shell ด้วย listDatabases

ใช้ db.adminCommand('listDatabases') เพื่อดึงรายชื่อและข้อมูล Database ทั้งหมดจาก MongoDB Shell

ขั้นตอนการทำงาน

1. ตรวจสอบ Database ปัจจุบัน

> db;
Test

2. เรียก listDatabases ผ่าน adminCommand

> var allDatabaseList = db.adminCommand('listDatabases');

3. แสดงผลลัพธ์ด้วย printjson

> printjson(allDatabaseList);

4. ผลลัพธ์ตัวอย่าง

{
    "databases" : [
        { "name" : "admin", "sizeOnDisk" : 495616, "empty" : false },
        { "name" : "config", "sizeOnDisk" : 98304, "empty" : false },
        { "name" : "local", "sizeOnDisk" : 73728, "empty" : false },
        { "name" : "sample", "sizeOnDisk" : 1388544, "empty" : false },
        { "name" : "sampleDemo", "sizeOnDisk" : 278528, "empty" : false },
        { "name" : "studentSearch", "sizeOnDisk" : 262144, "empty" : false },
        { "name" : "test", "sizeOnDisk" : 9695232, "empty" : false }
    ],
    "totalSize" : 12292096,
    "ok" : 1
}

ฟิลด์สำคัญในผลลัพธ์

การใช้งานต่อ: วนลูปทำงานกับแต่ละ DB

allDatabaseList.databases.forEach(function(dbInfo) {
    var db = db.getSiblingDB(dbInfo.name);
    // ทำงานกับ db นี้ได้แล้ว
    print("DB: " + dbInfo.name + ", Collections: " + db.getCollectionNames().length);
});

คำสั่ง Admin อื่นๆ ที่มีประโยชน์

  • db.adminCommand({ listDatabases: 1, filter: { sizeOnDisk: { $gt: 1000000 } } }) - กรองขนาด
  • db.adminCommand({ serverStatus: 1 }) - สถานะ Server
  • db.adminCommand({ replSetGetStatus: 1 }) - Replica Set Status

สรุป

  • ใช้ db.adminCommand('listDatabases') เพื่อดู Database ทั้งหมด
  • ไม่ต้อง use admin ก่อน (adminCommand รันบน admin อัตโนมัติ)
  • คืนค่า Object มี databases array, totalSize, ok
  • เหมาะสำหรับ Admin Script, Monitoring, Backup automation
Fieldความหมาย
nameชื่อ Database
sizeOnDiskขนาดบนดิสก์ (Bytes)
emptytrue/false - ว่างหรือไม่
totalSizeรวมขนาดทุก Database