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

วิธีดูรายชื่อคอลเลกชันทั้งหมดจากทุกฐานข้อมูลใน MongoDB

ใช้คำสั่ง listDatabases ผ่าน database admin แล้ววนลูปดึงชื่อคอลเลกชันจากแต่ละ database

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

1. สลับไปที่ database admin และดึงรายชื่อ database ทั้งหมด

> switchDatabaseAdmin = db.getSiblingDB("admin");
> allDatabaseName = switchDatabaseAdmin.runCommand({ "listDatabases": 1 }).databases;

2. วนลูปแต่ละ database เพื่อดึงชื่อคอลเลกชัน

> allDatabaseName.forEach(function(databaseName) {
    db = db.getSiblingDB(databaseName.name);
    collectionName = db.getCollectionNames();
    collectionName.forEach(function(collectionName) {
        print(collectionName);
    });
});

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

จะแสดงรายชื่อคอลเลกชันทุกตัวจากทุก database ต่อเนื่องกัน:

clearingItemsInNestedArrayDemo
customIdDemo
deleteRecordDemo
documentExistsOrNotDemo
findAllExceptFromOneOrtwoDemo
mongoExportDemo
startup_log
arraySizeErrorDemo
basicInformationDemo
... (และอื่นๆ อีกมาก)

คำอธิบายคำสั่งสำคัญ

  • db.getSiblingDB("admin") - เชื่อมต่อไปยัง database admin
  • runCommand({ "listDatabases": 1 }) - รันคำสั่งรายชื่อ database
  • db.getSiblingDB(name) - สลับ context ไปยัง database ที่ระบุ
  • db.getCollectionNames() - ดึงรายชื่อคอลเลกชันใน database ปัจจุบัน

กรณีใช้งาน

  • Audit ฐานข้อมูลทั้งหมด
  • หาคอลเลกชันที่ชื่อซ้ำข้าม database
  • สคริปต์ backup/migration แบบอัตโนมัติ

สรุป

ต้องผ่าน database admin ก่อน แล้ววนลูปแต่ละ database ด้วย getSiblingDB() และ getCollectionNames() เพื่อดึงรายชื่อคอลเลกชันทั้งหมด