Я зіткнувся з дивною поведінкою монго, і хотів би це трохи пояснити ...
Моє прохання таке просте: я хотів би отримати розмір одного документа у колекції. Я знайшов два можливих рішення:
- Object.bsonsize - деякий метод javascript, який повинен повертати розмір у байтах
- db.collection.stats () - де є рядок 'avgObjSize', який створює деякий "агрегований" (середній) розмір подання даних. Це просто представляє середній розмір одного документа.
Коли я створюю тестову колекцію лише з одним документом, обидві функції повертають різні значення. Як це можливо?
Чи існує якийсь інший спосіб отримання розміру документа mongo?
Тут я надаю деякий код, на якому я виконую тестування:
Я створив нову базу даних "тест" і ввів простий документ із лише одним атрибутом: type: "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