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

หาขนาด BSON จริงของเอกสารใน MongoDB


ใช้ Object.bsonsize() ใน MongoDB Shell

ฟังก์ชัน Object.bsonsize() คืนค่าขนาดของเอกสารในหน่วย **Bytes** ตามมาตรฐาน BSON

ตัวอย่างข้อมูล

> db.demo477.insertOne({ "ClientId": 1, "ClientName": "Chris" });
> db.demo477.insertOne({ "ClientId": 2, "ClientName": "David" });
> db.demo477.insertOne({ "ClientId": 3, "ClientName": "Bob" });

Query หาขนาดเอกสารแรก

> Object.bsonsize(db.demo477.findOne())

ผลลัพธ์

62

คำอธิบาย

  • ขนาด 62 bytes รวม _id (ObjectId 12 bytes), ClientId (int32 4 bytes), ClientName (string + overhead)
  • BSON encoding มี overhead: field name, type byte, length prefix สำหรับ string
  • ใช้ตรวจสอบขนาดเอกสารก่อน insert (limit 16MB ต่อเอกสาร)

วิธีอื่น: ใช้ aggregation (MongoDB 4.4+)

db.demo477.aggregate([
  { $project: { size: { $bsonSize: "$$ROOT" } } }
]);

การประมาณขนาด (Estimation)

Typeประมาณขนาด (bytes)
ObjectId12
Int324
Int648
Double8
Stringความยาว + 1 (length byte) + overhead
Boolean1
Date8
Null1

ใช้งานจริง

// หาเอกสารที่ใหญ่ที่สุด
db.demo477.aggregate([
  { $project: { size: { $bsonSize: "$$ROOT" } } },
  { $sort: { size: -1 } },
  { $limit: 10 }
]);

// หาขนาดเฉลี่ย
db.demo477.aggregate([
  { $project: { size: { $bsonSize: "$$ROOT" } } },
  { $group: { _id: null, avgSize: { $avg: "$size" }, maxSize: { $max: "$size" } } }
]);