2012-01-07 30 views
8

Có phương pháp nào để xác định kích thước của một cá thể cụ thể của mô hình/tài liệu trong MongoDB bằng Mongoid không?Xác định kích thước của tài liệu bằng Mongoid

+0

Tôi thực sự tìm ra một giải pháp để có được số byte của một tài liệu cụ thể: 'BSON.serialize (Model.first.as_document) .size' –

Trả lời

7

Vì vậy, bạn có thể nhận được kích thước lý thuyết của tài liệu như bạn đã minh họa trong nhận xét của mình (BSON.serialize(Model.first.as_document).size).

Tuy nhiên, cần lưu ý rằng đây có thể không phải là kích thước thực của đối tượng "trên đĩa". MongoDB sẽ tự động thêm một bộ đệm vào các tài liệu mới để cho phép chúng phát triển tại chỗ. Khi nói đến việc nhận được kích thước thực tế trên đĩa cho một tài liệu cụ thể, tôi không tin rằng điều này là có thể.

Tuy nhiên, bạn có thể nhận được bộ đệm trung bình bằng cách sử dụng db.collection_name.stats().

+1

này dường như không làm việc với Mongoid 3.x nữa. –

0

này làm việc cho Mongoid 3.1.0:

model.as_document.__bson_dump__.size 
-1

Đối 3.x mongoid bạn có thể sử dụng Moped :: BSON :: Document

ví dụ:

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

Giải pháp cho 2015 và mongoid (4.0.2):

model_instance.as_document.to_bson.size 
0

W orking cho MongoID 5.x. Với vỏ Mongo và MongoID là đơn giản:

  1. Pick up id đối tượng của bạn

    ModelName.first.id # then copy your_id

  2. Run Mongo console

    mongo

  3. Lấy kích thước tính bằng byte của tài liệu

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

Các vấn đề liên quan