Я столкнулся со странным поведением mongo и хотел бы немного его прояснить ...
Моя просьба проста: я хотел бы получить размер одного документа в коллекции. Я нашел два возможных решения:
- Object.bsonsize - какой-то метод javascript, который должен возвращать размер в байтах
- db.collection.stats () - где есть строка 'avgObjSize', которая производит некоторое "агрегированное" (среднее) представление размера данных. Он просто представляет собой средний размер одного документа.
Когда я создаю тестовую коллекцию только из одного документа, обе функции возвращают разные значения. Как это возможно?
Существует ли какой-то другой способ получить размер документа mongo?
Здесь я привожу код, над которым я тестирую:
Я создал новую базу данных "test" и ввел простой документ только с одним атрибутом: 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