Tôi đã gặp phải một hành vi kỳ lạ của mongo và tôi muốn làm rõ nó một chút ...
Yêu cầu của tôi rất đơn giản như sau: Tôi muốn lấy kích thước của một tài liệu duy nhất trong bộ sưu tập. Tôi đã tìm thấy hai giải pháp khả thi:
- Object.bsonsize - một số phương thức javascript sẽ trả về kích thước tính bằng byte
- db.collection.stats () - nơi có dòng 'avgObjSize' tạo ra một số chế độ xem kích thước "tổng hợp" (trung bình) trên dữ liệu. Nó chỉ đơn giản là đại diện cho kích thước trung bình của một tài liệu.
Khi tôi tạo bộ sưu tập thử nghiệm chỉ với một tài liệu, cả hai hàm đều trả về các giá trị khác nhau. Làm thế nào là nó có thể?
Nó có tồn tại một số phương pháp khác để lấy kích thước của một tài liệu mongo không?
Ở đây, tôi cung cấp một số mã mà tôi thực hiện thử nghiệm:
Tôi đã tạo cơ sở dữ liệu mới 'kiểm tra' và nhập tài liệu đơn giản chỉ với một thuộc tính: type: "auto"
db.test.insert({type:"auto"})
đầu ra từ lệnh gọi hàm 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
}
đầu ra từ lệnh gọi hàm bsonsize: Object.bsonsize (db.test.find ({test: "auto"}))
481