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

एक लूप में MongoDB में सहेजा जा रहा है

ऐसा इसलिए है क्योंकि save वास्तव में एक I/O ऑपरेशन है जो Async है। अब, for लूप वास्तव में सिंक है। इसके बारे में इस तरह से सोचें:आपका जेएस इंजन प्रत्येक पंक्ति को देखता है जो इसे देखता है। मान लें कि इन पंक्तियों को एक के बाद एक ढेर पर रखा गया है। जब save . की बात आती है , यह इसे एक अलग स्टैक पर एक तरफ रखता है (क्योंकि यह एक I/O ऑपरेशन है, और इस प्रकार समय लगेगा) और बाकी लूप के साथ आगे बढ़ता है। ऐसा पता चलता है कि इंजन इस नए स्टैक की जाँच तभी करेगा जब उसने पुराने पर हर लाइन को पूरा कर लिया हो। इसलिए, वेरिएबल cats . का मान सरणी में अंतिम आइटम होगा। इस प्रकार, केवल अंतिम मान सहेजा जाता है।

इस त्रासदी से लड़ने के लिए आप कई तरीकों का इस्तेमाल कर सकते हैं:

  1. क्लोजर - और पढ़ें
    • आप इस तरह बंद कर सकते हैं:cats.forEach()
  2. वादे - और पढ़ें . एक स्वीट लाइब्रेरी है जो मोंगो चालक के साथ काम करना आसान बनाने का वादा करता है।
  3. जनरेटर, आदि - और पढ़ें . अभी प्राइमटाइम के लिए तैयार नहीं है।

<उप>#2 के बारे में नोट - मैं परियोजना का योगदानकर्ता नहीं हूं, लेकिन लेखक के साथ काम करता हूं। मैं पिछले एक साल से अधिक समय से पुस्तकालय का उपयोग कर रहा हूं, और यह तेज़ और शानदार है!



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB एग्रीगेट और ग्रुपबाय को समझना

  2. सबडॉक्स का मोंगो अपडेट

  3. स्प्रिंग-डेटा-मोंगो कंस्ट्रक्टर का उपयोग करके java.util.List को इंस्टेंट करने में असमर्थ है

  4. मैं मोंगो जावास्क्रिप्ट खोल में एक क्वेरी कैसे निरस्त करूं?

  5. सी-ड्राइवर के साथ इंडेक्स द्वारा मोंगो सरणी तत्वों को अपडेट करें