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

การแปลงคอลเลกชันทั่วไปเป็น Capped Collection ใน MongoDB

แปลง Collection เป็น Capped Collection ด้วย runCommand

Capped Collection เป็นคอลเลกชันที่มีขนาดคงที่ (Fixed Size) ทำงานแบบ Circular Buffer - เมื่อเต็มจะทับข้อมูลเก่าทีละตัว ใช้เหมาะสำหรับ Log, Cache, Real-time data ที่ไม่ต้องเก็บนาน

ตัวอย่างข้อมูลทดสอบ

> db.demo416.insertOne({ "StudentName": "David" });
> db.demo416.insertOne({ "StudentName": "Mike" });
> db.demo416.insertOne({ "StudentName": "Sam" });

แสดงข้อมูลก่อนแปลง

> db.demo416.find();

คำสั่งแปลงเป็น Capped Collection ขนาด 100 ไบต์

> db.runCommand({ convertToCapped: 'demo416', size: 100 });

ผลลัพธ์: { "ok": 1 }

ตรวจสอบสถานะคอลเลกชัน

> db.demo416.stats();

ผลลัพธ์สำคัญจาก stats()

{
  "ns": "test.demo416",
  "size": 132,
  "count": 3,
  "capped": true,
  "maxSize": 256,
  "max": -1,
  "ok": 1
}

คำอธิบายฟิลด์สำคัญ

  • capped: true: ยืนยันว่าเป็น Capped Collection แล้ว
  • size: 132: ขนาดข้อมูลปัจจุบัน (bytes)
  • maxSize: 256: ขนาดสูงสุดที่กำหนด (bytes) - โน้ต: size parameter 100 ถูกปรับขั้นต่ำ
  • max: -1: ไม่จำกัดจำนวนเอกสาร (จำกัดแค่ขนาด)

ข้อจำกัดของ Capped Collection

  • ไม่สามารถ ลบเอกสารเดี่ยว ได้ (ต้อง drop collection ทั้งอัน)
  • ไม่สามารถ อัปเดตเอกสารให้ใหญ่ขึ้น ได้ (ต้องมีขนาดเท่าเดิมหรือเล็กลง)
  • ไม่รองรับ Sharding
  • ไม่มี _id index อัตโนมัติ (ต้องสร้างเองถ้าต้องการ)
  • ขนาดขั้นต่ำ ~ 256 bytes (MongoDB จะปรับขึ้นอัตโนมัติ)

การสร้าง Capped Collection ใหม่ (แนะนำมากกว่าการแปลง)

> db.createCollection("logs", { capped: true, size: 1000000, max: 10000 });

ระบุได้ทั้งขนาด (size) และจำนวนเอกสารสูงสุด (max)