MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

जावा के साथ मोंगो - बैचसाइज के साथ क्वेरी ढूंढें

डीबीकर्सर आपको उन दस्तावेज़ों के सेट पर पुनरावृति करने की अनुमति देता है जिन्हें क्वेरी . के लिए प्रासंगिक समझा जाता है ढूंढें () . में पास करने के लिए तरीका। यह इन दस्तावेज़ों को अंतर्निहित डेटाबेस से batchSize . के टुकड़ों में आलसी रूप से प्राप्त करता है ।

तो, डिफ़ॉल्ट बैच आकार (101, आईआईआरसी) के साथ यह आपके क्लाइंट को पहले 101 दस्तावेज़ लौटाएगा और फिर जैसे ही आपका क्लाइंट कोड 101 वें दस्तावेज़ से आगे बढ़ता है, यह (पर्दे के पीछे) अगले 101 दस्तावेज़ों को पकड़ लेगा और इसी तरह तक जो भी हो निम्न में से पहले होता है:

  • आपकी क्वेरी के लिए प्रासंगिक सभी दस्तावेज़ वापस कर दिए गए हैं यानी कर्सर समाप्त हो गया है
  • आपका क्लाइंट पुनरावृति करना बंद कर देता है

जब आप एक स्पष्ट बैचसाइज़ . सेट करते हैं तो यही बात लागू होती है तो आपके मामले में जब आप batchSize=500 . सेट करते हैं , ढूंढें () कॉल एक DBCursor लौटाता है जिसमें (अधिक से अधिक) 500 दस्तावेज़ हैं और यदि आपकी क्वेरी से मेल खाने वाले 500 से अधिक दस्तावेज़ थे तो जैसे ही आप 500वें दस्तावेज़ से आगे बढ़ते हैं, मोंगोडीबी जावा ड्राइवर (पर्दे के पीछे) अगले बैच को लाएगा।

आपने कहा...

... यदि आपको केवल 500 दस्तावेज़ मिलते हैं तो या तो आपने 500 के बाद पुनरावृति करना बंद कर दिया या केवल 500 दस्तावेज़ों को आपकी क्वेरी के लिए प्रासंगिक माना गया। ।

गिनती() . का उपयोग करके आप देख सकते हैं कि आपकी क्वेरी के लिए कितने दस्तावेज़ प्रासंगिक हैं तरीका। उदाहरण के लिए:

int count = collection.find(query).count();

आप एक ही बार में . अपनी क्वेरी से संबंधित सभी दस्तावेज़ प्राप्त कर सकते हैं DBCursor . का उपयोग किए बिना इस तरह...

List<DBObject> obj = collection.find(query).toArray();

... हालांकि निश्चित रूप से इसका आपके आवेदन के ढेर के लिए प्रभाव हो सकता है क्योंकि इसका परिणाम प्रत्येक दस्तावेज़ में होगा जो आपके मानदंडों को आपके क्लाइंट में ढेर पर संग्रहीत किया जा रहा है (बजाय <कोड के माध्यम से बैचों में पढ़ने के अधिक स्मृति अनुकूल दृष्टिकोण के बजाय>डीबीकर्सर )।



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoSocketReadException:समय से पहले स्ट्रीम के अंत तक पहुंच गया (निष्क्रियता की अवधि के बाद)

  2. आप Mongoose के संग्रह से सभी दस्तावेज़ कैसे हटा सकते हैं?

  3. मोंगोडब में डेटा अपडेट करने में असमर्थ

  4. एक संग्रह में कनवर्ट करने के लिए पूर्ववत करें

  5. क्या नेवला मोंगोडब `findAndModify` पद्धति का समर्थन करता है?