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

mongodb - इंडेक्स के बजाय COLLSCAN का उपयोग करके $ लुकअप पाइपलाइन

आपके व्याख्या आउटपुट में संग्रह स्कैन map_levels . को संदर्भित कर रहा है संग्रह, जैसा कि queryPlanner.namespace . में बताया गया है मूल्य। $lookup चरण दूसरे संग्रह से डेटा को वर्तमान पाइपलाइन में मर्ज करता है। चूंकि आपने $lookup . से पहले कोई क्वेरी चरण निर्दिष्ट नहीं किया है , map_levels संग्रह स्कैन का उपयोग करके संग्रह को पुनरावृत्त किया जाएगा। यदि एक संपूर्ण संग्रह को बिना किसी फ़िल्टरिंग या सॉर्ट मानदंड के लोड किया जा रहा है, तो एक संग्रह स्कैन में इंडेक्स को पुनरावृत्त करने और दस्तावेज़ों को लाने की तुलना में कम ओवरहेड होता है।

आप $match . जोड़कर मौजूदा संग्रह स्कैन से बच सकते हैं आपके $lookup . से पहले का चरण (यह मानते हुए कि आप पूर्ण map_levels . को संसाधित नहीं करना चाहते हैं संग्रह)।

दुर्भाग्य से क्वेरी व्याख्या आउटपुट (जैसे कि MongoDB 4.0 पर) $lookup . के लिए अनुक्रमणिका उपयोग को इंगित नहीं करता है चरण। इसके लिए एक वैकल्पिक हल यह होगा कि आप अपने लुकअप की pipeline . का उपयोग करके व्याख्या करें एक शीर्ष स्तरीय एकत्रीकरण क्वेरी के रूप में।

MongoDB इश्यू ट्रैकर में देखने/अपवोट करने के लिए एक प्रासंगिक समस्या है:SERVER-22622:$lookup में सुधार करें "से" संग्रह पर क्वेरी योजना को इंगित करने के लिए समझाएं




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB डेटा को CSV प्रारूप में कैसे निर्यात करें?

  2. नेवला सरणी पर डुप्लिकेट प्रविष्टियों से बचें

  3. मोंगोडब में एक साथ कई क्षेत्रों के आधार पर छाँटें

  4. MongoClient क्लास बनाम MongoDB\Driver\Manager Class

  5. MongoDB में ObjectIDs के बजाय UUIDs का उपयोग करना