ฉันพบพฤติกรรมแปลก ๆ ของ mongo และฉันอยากจะชี้แจงมันสักหน่อย ...
คำขอของฉันง่ายมาก: ฉันต้องการรับเอกสารขนาดเดียวในคอลเลกชัน ฉันพบวิธีแก้ปัญหาที่เป็นไปได้สองวิธี:
- Object.bsonsize - วิธีการจาวาสคริปต์บางอย่างที่ควรส่งคืนขนาดเป็นไบต์
- db.collection.stats () - โดยที่มีบรรทัด "avgObjSize" ที่สร้างมุมมองขนาด "รวม" (ค่าเฉลี่ย) บางส่วนบนข้อมูล เป็นเพียงขนาดเฉลี่ยของเอกสารเดียว
เมื่อฉันสร้างคอลเล็กชันการทดสอบด้วยเอกสารเพียงชุดเดียวฟังก์ชันทั้งสองจะส่งคืนค่าที่แตกต่างกัน มันเป็นไปได้ยังไงกัน?
มีวิธีอื่นในการรับขนาดของเอกสาร mongo หรือไม่?
ที่นี่ฉันให้รหัสบางส่วนที่ฉันทำการทดสอบ:
ฉันสร้างฐานข้อมูลใหม่ 'ทดสอบ' และป้อนเอกสารอย่างง่ายด้วยแอตทริบิวต์เดียว: ประเภท: "auto"
db.test.insert({type:"auto"})
ผลลัพธ์จากการเรียกใช้ฟังก์ชัน stats (): db.test.stats () :
{ "ns" : "test.test", "count" : 1, "size" : 40, "avgObjSize" : 40, "storageSize" : 4096, "numExtents" : 1, "nindexes" : 1, "lastExtentSize" : 4096, "paddingFactor" : 1, "systemFlags" : 1, "userFlags" : 0, "totalIndexSize" : 8176, "indexSizes" : { "_id_" : 8176 }, "ok" : 1
}
เอาต์พุตจากการเรียกฟังก์ชัน bsonsize: Object.bsonsize (db.test.find ({test: "auto"}))
481