Определить размер документа с помощью Mongoid - PullRequest
8 голосов
/ 08 января 2012

Существует ли метод определения размера конкретного экземпляра модели / документа в MongoDB с использованием Mongoid?

Ответы [ 5 ]

7 голосов
/ 08 января 2012

Таким образом, вы можете получить теоретический размер документа, как показано в вашем комментарии (BSON.serialize(Model.first.as_document).size).

Однако следует отметить, что это может быть не фактический размер объекта "надиск».MongoDB автоматически добавит буфер к новым документам, чтобы они могли расти на месте.Когда дело доходит до получения фактического размера на диске для одного конкретного документа, я не верю, что это возможно.

Однако вы можете получить средний буфер, используя db.collection_name.stats().

5 голосов
/ 30 апреля 2015

Решение на 2015 год и монгоид (4.0.2):

model_instance.as_document.to_bson.size
0 голосов
/ 23 мая 2016

Работает для MongoID 5.x.С оболочкой mongo и MongoID просто:

  1. Подберите свой идентификатор объекта

    ModelName.first.id # then copy your_id

  2. Запустите консоль mongo

    mongo

  3. Получить размер в байтах документа

    Object.bsonsize(db.modelname.find({"_id": ObjectId("your_id")}))

0 голосов
/ 30 сентября 2013

Для mongoid 3.x вы можете использовать Moped :: BSON :: Document

, например:

your_document = Model.find(id)
# get size
size = Moped::BSON::Document.serialize(your_document.as_document).size
0 голосов
/ 16 июля 2013

Это работает для Mongoid 3.1.0:

model.as_document.__bson_dump__.size
...