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

วิธีวนลูปผ่านทุกคอลเลกชันใน MongoDB และรันคำสั่งอัตโนมัติ

สามารถใช้ getCollectionNames() ร่วมกับ forEach() เพื่อวนลูปผ่านทุกคอลเลกชันในฐานข้อมูลปัจจุบันและรันคำสั่งที่ต้องการ

รูปแบบคำสั่ง

db.getCollectionNames().forEach(function(collectionName) {
    var latestDoc = db[collectionName].find().sort({_id: -1}).limit(1);
    if (latestDoc.hasNext()) {
        printjson(latestDoc.next()._id.getTimestamp());
    }
});

คำอธิบาย

  • db.getCollectionNames() - ดึงรายชื่อคอลเลกชันทั้งหมด
  • forEach() - วนลูปแต่ละคอลเลกชัน
  • db[collectionName] - เข้าถึงคอลเลกชันโดยใช้ชื่อจากตัวแปร
  • sort({_id: -1}).limit(1) - ดึงเอกสารล่าสุด (ObjectId มี timestamp ตัวแรก)
  • _id.getTimestamp() - แปลง ObjectId เป็นวันที่/เวลา

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

ISODate("2019-02-21T18:52:43Z")
ISODate("2019-03-19T17:49:00Z")
ISODate("2019-03-06T15:40:12Z")
ISODate("2019-03-15T16:31:50Z")
ISODate("2019-02-21T15:40:52Z")
... (ต่อไป)

กรณีใช้งานทั่วไป

  • ตรวจสอบเอกสารล่าสุดของทุกคอลเลกชัน
  • รันคำสั่ง maintenance ทุกคอลเลกชัน
  • สถิติข้อมูลแบบรวมทั้ง database

ข้อควรระวัง

คำสั่งนี้อาจใช้เวลานานถ้ามีคอลเลกชันเยอะหรือข้อมูลมาก ควรทดสอบในสภาพแวดล้อมพัฒนาก่อน