Я столкнулся с странным поведением манго, и я хотел бы немного его прояснить...
Мой запрос прост: я хотел бы получить размер одного документа в коллекции.
Я нашел два возможных решения:
- 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