2012-01-07 11 views
8

का उपयोग कर किसी दस्तावेज़ का आकार निर्धारित करें क्या मोंगोइड का उपयोग करके मोंगोडीबी में मॉडल/दस्तावेज़ के विशिष्ट उदाहरण के आकार को निर्धारित करने का कोई तरीका है?Mongoid

+0

मैं वास्तव में एक विशिष्ट दस्तावेज़ के बाइट की संख्या प्राप्त करने के लिए एक समाधान पता लगा: 'BSON.serialize (Model.first.as_document) .size' –

उत्तर

7

तो आप दस्तावेज़ की सैद्धांतिक आकार प्राप्त कर सकते हैं जैसा कि आपने अपनी टिप्पणी में चित्रित किया है (BSON.serialize(Model.first.as_document).size)।

हालांकि, यह ध्यान दिया जाना चाहिए कि यह "डिस्क पर" ऑब्जेक्ट का वास्तविक आकार नहीं हो सकता है। मोंगो डीबी स्वचालित रूप से नए दस्तावेज़ों में एक बफर जोड़ देगा ताकि उन्हें जगह में बढ़ने की अनुमति मिल सके। जब एक विशिष्ट दस्तावेज़ के लिए डिस्क पर वास्तविक आकार प्राप्त करने की बात आती है तो मुझे विश्वास नहीं है कि यह संभव है।

हालांकि, आप db.collection_name.stats() का उपयोग करके औसत बफर प्राप्त कर सकते हैं।

+1

इस के साथ काम नहीं लगता है Mongoid 3.x और भी। –

0

यह Mongoid 3.1.0 के लिए काम करता है:

model.as_document.__bson_dump__.size 
-1

mongoid 3.x आप इंजन से साइकिल :: BSON उपयोग कर सकते हैं :: दस्तावेज़

उदाहरण के लिए

:

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

के लिए समाधान 2015 और मोंगोइड (4.0.2):

model_instance.as_document.to_bson.size 
0

डब्ल्यू MongoID 5.x के लिए Orking। मोंगो खोल के साथ और MongoID सीधा है:

  1. अपने ऑब्जेक्ट id उठाओ

    ModelName.first.id # then copy your_id

  2. भागो मोंगो सांत्वना

    mongo

  3. की बाइट में आकार प्राप्त करें दस्तावेज़

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