Mongo = получить размер одного документа
я столкнулся со странным поведением монго, и я хотел бы немного прояснить его...
Мой запрос прост: я хотел бы получить размер одного документа в коллекции.
Я нашел два возможных решения:--4-->
3 ответов
эффективный объем пространства, который документ займет в коллекции, будет больше размера вашего документа из-за Запись Обивка механизм.
вот почему существует разница между выходами db.test.stats()
и Object.bsonsize(..)
.
для получения точно размер (в байтах) документа, придерживаться
Я рекомендую использовать этот скрипт, чтобы получить реальный размер.
db.users.find().forEach(function(obj)
{
var size = Object.bsonsize(obj);
print('_id: '+obj._id+' || Size: '+size+'B -> '+Math.round(size/(1024))+'KB -> '+Math.round(size/(1024*1024))+'MB (max 16MB)');
});
Примечание: Если ваши идентификаторы являются 64-битными целыми числами, выше будет усекать значение ID при печати! Если это так, вы можете использовать вместо этого:
db.users.find().forEach(function(obj)
{
var size = Object.bsonsize(obj);
var stats =
{
'_id': obj._id,
'bytes': size,
'KB': Math.round(size/(1024)),
'MB': Math.round(size/(1024*1024))
};
print(stats);
});
Это также имеет преимущество возвращения JSON, поэтому GUI, такой как RoboMongo, может табулировать его!
источник:https://stackoverflow.com/a/16957505/3933634
edit: благодаря @zAlbee для вашего предлагаю завершения.