मुझे मोंगो के एक अजीब व्यवहार का सामना करना पड़ा और मैं इसे थोड़ा स्पष्ट करना चाहूंगा ...
मेरा अनुरोध इस तरह सरल है: मैं संग्रह में एकल दस्तावेज़ का आकार प्राप्त करना चाहूंगा। मुझे दो संभावित उपाय मिले:
- Object.bsonsize - कुछ जावास्क्रिप्ट विधि जो बाइट्स में एक आकार वापस करना चाहिए
- db.collection.stats () - जहां डेटा पर कुछ "एग्रीगेटेड" (औसत) साइज व्यू पैदा करने वाली एक लाइन 'एविगोबीजाइज' होती है। यह केवल एकल दस्तावेज़ के औसत आकार का प्रतिनिधित्व करता है।
जब मैं केवल एक दस्तावेज़ के साथ परीक्षण संग्रह बनाता हूं, तो दोनों फ़ंक्शन अलग-अलग मान लौटाते हैं। यह कैसे संभव है?
क्या यह किसी अन्य दस्तावेज का एक आकार प्राप्त करने के लिए मौजूद है?
यहां, मैं कुछ कोड प्रदान करता हूं जिन पर मैं परीक्षण करता हूं:
मैंने केवल एक विशेषता के साथ नया डेटाबेस 'परीक्षण' और इनपुट सरल दस्तावेज़ बनाया: प्रकार: "ऑटो"
db.test.insert({type:"auto"})
आंकड़े () फ़ंक्शन कॉल से आउटपुट: db.test.stats () :
{ "ns" : "test.test", "count" : 1, "size" : 40, "avgObjSize" : 40, "storageSize" : 4096, "numExtents" : 1, "nindexes" : 1, "lastExtentSize" : 4096, "paddingFactor" : 1, "systemFlags" : 1, "userFlags" : 0, "totalIndexSize" : 8176, "indexSizes" : { "_id_" : 8176 }, "ok" : 1
}
bsonsize फ़ंक्शन कॉल से आउटपुट: Object.bsonsize (db.test.find ({परीक्षण: "ऑटो"}))
481