Mongodb 使用Mongoid确定文档的大小

Mongodb 使用Mongoid确定文档的大小,mongodb,mongoid,Mongodb,Mongoid,是否有一种方法可以使用Mongoid确定MongoDB中模型/文档的特定实例的大小?这样您就可以获得文档的理论大小,如您在注释中所示(BSON.serialize(model.first.as_document).size) 但是,应该注意,这可能不是“磁盘上”对象的实际大小。MongoDB将自动为新文档添加一个缓冲区,以允许它们就地增长。当涉及到获取一个特定文档的实际磁盘大小时,我认为这是不可能的 但是,您可以通过使用db.collection\u name.stats()获得平均缓冲区,这适

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

这样您就可以获得文档的理论大小,如您在注释中所示(
BSON.serialize(model.first.as_document).size

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


但是,您可以通过使用
db.collection\u name.stats()

获得平均缓冲区,这适用于Mongoid 3.1.0:

model.as_document.__bson_dump__.size

对于mongoid 3.x,您可以使用Moped::BSON::Document

例如:

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

2015年和mongoid的解决方案(4.0.2):


为MongoID 5.x工作。使用mongo shell和MongoID非常简单:

  • 获取您的对象id

    ModelName.first.id#然后复制您的_id

  • 运行mongo控制台

    mongo

  • 获取文档的大小(以字节为单位)

    Object.bsonsize(db.modelname.find({“\u id”:ObjectId(“您的\u id”)}))


  • 实际上,我想出了一个解决方案来获取特定文档的字节数:
    BSON.serialize(Model.first.as_document)。size
    这不是他所说的。Mongoid是MongoDB的Ruby ORM。
    model_instance.as_document.to_bson.size