使用Mongoid确定文档的大小

问题描述:

有没有一种方法来确定使用Mongoid的MongoDB中模型/文档的特定实例的大小?使用Mongoid确定文档的大小

+0

我居然想出了一个解决方案,以获得某个文档的字节数: 'BSON.serialize(Model.first.as_document).size' – 2012-01-07 22:26:07

因此,您可以获得文档的理论大小,如您在评论中所示(BSON.serialize(Model.first.as_document).size)所示。

但是,应该注意的是,这可能不是“磁盘上”对象的实际大小。 MongoDB会自动为新文档添加一个缓冲区,以允许它们就地增长。当谈到为一个特定的文件获取磁盘的实际大小时,我不认为这是可能的。

但是,您可以使用db.collection_name.stats()获得平均缓冲区。

+1

这似乎不是一起工作Mongoid 3.x更多。 – 2012-12-04 20:37:00

这适用于Mongoid 3.1.0:

model.as_document.__bson_dump__.size 

对于mongoid 3.x中,你可以使用助力车:: BSON ::文件

例如:

your_document = Model.find(id) 
# get size 
size = Moped::BSON::Document.serialize(your_document.as_document).size 

解决方案2015和mongoid(4.0.2):

model_instance.as_document.to_bson.size 

W请求MongoID 5.x.随着蒙戈外壳和MongoID很简单:

  1. 拿起你的对象ID

    ModelName.first.id # then copy your_id

  2. 运行蒙戈控制台

    mongo

  3. 获取的字节大小文件

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