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

एकाधिक फ़ील्ड मोंगो डीबी पर छंटनी

MongoDB क्वेरी ऑप्टिमाइज़र यह निर्धारित करने के लिए विभिन्न योजनाओं की कोशिश करके काम करता है कि किसी दिए गए प्रश्न के लिए कौन सा दृष्टिकोण सबसे अच्छा काम करता है। उस क्वेरी पैटर्न के लिए विजेता योजना तब अगले ~1,000 प्रश्नों के लिए या जब तक आप explain() नहीं करते तब तक कैश किया जाता है। ।

यह समझने के लिए कि किन क्वेरी योजनाओं पर विचार किया गया, आपको explain(1) . का उपयोग करना चाहिए , जैसे:

db.col.find({category:'A'}).sort({updated: -1}).explain(1)

allPlans विवरण उन सभी योजनाओं को दिखाएगा जिनकी तुलना की गई थी।

यदि आप कोई ऐसी क्वेरी चलाते हैं जो बहुत चयनात्मक नहीं है (उदाहरण के लिए, यदि कई रिकॉर्ड आपके {category: { $ne:'A'}} के मानदंड से मेल खाते हैं ), MongoDB के लिए किसी इंडेक्स से मिलान करने के बजाय किसी BasicCursor (टेबल स्कैन) का उपयोग करके परिणाम खोजना तेज़ हो सकता है।

क्वेरी . में फ़ील्ड का क्रम आम तौर पर सूचकांक चयन के लिए कोई फर्क नहीं पड़ता (श्रेणी प्रश्नों के साथ कुछ अपवाद हैं)। सॉर्ट . में फ़ील्ड का क्रम सूचकांक चयन को प्रभावित करता है। अगर आपका sort() है मानदंड इंडेक्स ऑर्डर से मेल नहीं खाता है, इंडेक्स का उपयोग करने के बाद परिणाम डेटा को फिर से सॉर्ट करना होगा (आपको scanAndOrder:true देखना चाहिए) यदि ऐसा होता है तो व्याख्या आउटपुट में)।

यह भी ध्यान देने योग्य है कि MongoDB प्रति क्वेरी केवल एक अनुक्रमणिका का उपयोग करेगा ($or के अपवाद के साथ) एस)।

इसलिए यदि आप क्वेरी को ऑप्टिमाइज़ करने का प्रयास कर रहे हैं:

db.col.find({category:'A'}).sort({updated: -1, rating: -1})

आप सभी तीन क्षेत्रों को अनुक्रमणिका में शामिल करना चाहेंगे:

db.col.ensureIndex({category: 1, updated: -1, rating: -1})

FYI करें, यदि आप किसी विशेष क्वेरी को इंडेक्स (आमतौर पर आवश्यक या अनुशंसित नहीं) का उपयोग करने के लिए मजबूर करना चाहते हैं, तो एक hint() है। विकल्प जिसे आप आजमा सकते हैं।



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. सभी कुंजियों को सूचीबद्ध किए बिना सबफ़ील्ड को प्रोजेक्शन में शीर्ष स्तर पर बढ़ावा दें

  2. JSON फ़ाइल का Mongoimport

  3. मोंगोडीबी $दौर

  4. MongoDB BsonDocument को C# में मान्य JSON में कनवर्ट करें

  5. डोकर कंटेनर में चल रहे mongoDB से कनेक्ट करने में असमर्थ