में सबसे बड़ा दस्तावेज़ आकार खोजें क्या मोंगोडीबी में सबसे बड़ा दस्तावेज़ आकार ढूंढना संभव है?MongoDB
db.collection.stats()
औसत आकार दिखाता है, जो वास्तव में प्रतिनिधि नहीं है क्योंकि मेरे मामले के आकार में काफी भिन्नता हो सकती है।
में सबसे बड़ा दस्तावेज़ आकार खोजें क्या मोंगोडीबी में सबसे बड़ा दस्तावेज़ आकार ढूंढना संभव है?MongoDB
db.collection.stats()
औसत आकार दिखाता है, जो वास्तव में प्रतिनिधि नहीं है क्योंकि मेरे मामले के आकार में काफी भिन्नता हो सकती है।
आप इस मान को प्राप्त करने के लिए एक छोटी खोल स्क्रिप्ट का उपयोग कर सकते हैं।
नोट: इस (.toArray
से) पूरे परिणाम स्मृति में स्थापित की दुकान करने का प्रयास करेंगे: एक पूर्ण तालिका स्कैन
var max = 0;
db.test.find().forEach(function(obj) {
var curr = Object.bsonsize(obj);
if(max < curr) {
max = curr;
}
})
print(max);
नोट कर जाएंगी। बड़े डेटा सेट पर सावधान। उत्पादन में उपयोग न करें! अभिषेक के जवाब में मेमोरी सरणी में एक कर्सर पर काम करने का लाभ है।
यदि आप _id भी चाहते हैं, तो इसे आजमाएं। एक संग्रह बुलाया को देखते हुए "अनुरोध":
// Creates a sorted list, then takes the max
db.requests.find().toArray().map(function(request) { return {size:Object.bsonsize(request), _id:request._id}; }).sort(function(a, b) { return a.size-b.size; }).pop();
// { "size" : 3333, "_id" : "someUniqueIdHere" }
आप एक विशाल संग्रह के साथ काम कर रहे हैं एक ही बार में स्मृति में यह सब लोड हो रहा है काम नहीं करेगा, जब से तुम पूरे संग्रह के आकार की तुलना में अधिक रैम की आवश्यकता होगी इसके लिए काम करने के लिए।
इसके बजाय, आप निम्नलिखित पैकेज मैं बनाया का उपयोग कर बैचों में पूरे संग्रह की प्रक्रिया कर सकते हैं: https://www.npmjs.com/package/mongodb-largest-documents
आपको बस इतना करना है MongoDB कनेक्शन स्ट्रिंग और संग्रह नाम प्रदान करना है। स्क्रिप्ट बैच में पूरे संग्रह को पार करने के बाद शीर्ष एक्स सबसे बड़े दस्तावेज़ों को आउटपुट करेगा।
यह वही है जो निर्मित कर्सर के लिए अनुमति देता है। यह पूरे संग्रह को राम में संग्रहीत करने के बजाय डेटा स्ट्रीम करता है। – dmo
हाय @ डीएमओ, क्या आप अंतर्निहित कर्सर के माध्यम से इसे प्राप्त करने के लिए एक आदेश प्रदान कर सकते हैं? –
collection.find() एक कर्सर देता है। कर्सर डेटा की एक धारा है। तो जेएस में आप ऐसा कुछ कर सकते हैं ... https://jsfiddle.net/ro6efkdz/ – dmo
मैं क्या चालक आप उपयोग कर रहे पता नहीं है, लेकिन आप [bson आकार] को देखने के लिए सक्षम होना चाहिए (https://github.com/mongodb/mongo-c-driver/blob /master/src/bson.h#L141) किसी भी तरह। सबसे बड़ा दस्तावेज़ क्या है यह जानने के लिए वह और टेबल-स्कैन करें। – vinipsmaker
आसानी से नहीं, मोंगोडीबी क्वेरी में कोई '$ दस्तावेज़ आकार' ऑपरेटर नहीं है और '$ आकार' कुछ अलग है। अधिकांश क्लाइंट साइड ड्राइवरों में अत्यधिक वास्तविक तरीका, क्लाइंट साइड हेल्पर का उपयोग करने के लिए जावास्क्रिप्ट एक शामिल है। – Sammaye