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

एकत्रीकरण ढांचे के लिए कवर इंडेक्स बनाना

इंडेक्स का अधिकतम लाभ उठाने के लिए आपको पाइपलाइन में पर्याप्त रूप से $match की आवश्यकता होती है जो इंडेक्स के सभी क्षेत्रों का उपयोग करता है। और $and . का उपयोग करने से बचें ऑपरेटर क्योंकि यह अनावश्यक है और वर्तमान (2.4) संस्करण में एक इंडेक्स का पूरी तरह से उपयोग नहीं किया जा सकता है (सौभाग्य से आगामी 2.6 के लिए तय किया गया है)।

हालाँकि, क्वेरी बिल्कुल सही नहीं है क्योंकि आपको $elemMatch . का उपयोग करने की आवश्यकता है यह सुनिश्चित करने के लिए कि नाम और मान फ़ील्ड को संतुष्ट करने के लिए एक ही तत्व का उपयोग किया जाता है।

आपकी क्वेरी होनी चाहिए:

db.Phone.aggregate([
{$match: {  type: "Samsung", 
           attributes: { $all: [
                {$elemMatch: {"value":"100", "type" : "BatteryLife" }},
                {$elemMatch: {"value":"200$", "type" : "Price" }}
           ] }
        }
}]);

अब, यह नहीं है एक कवर की गई क्वेरी होने जा रही है, क्योंकि विशेषताएँ। मान और नाम एम्बेड किए गए हैं, इस तथ्य का उल्लेख नहीं करने के लिए कि नाम अनुक्रमणिका में नहीं है।

आपको इंडेक्स {"type":1, "attributes.value":1, "attributes.name":1} होना चाहिए सर्वश्रेष्ठ प्रदर्शन के लिए, हालांकि इसे अभी भी कवर नहीं किया जाएगा, यह अब की तुलना में बहुत अधिक चयनात्मक होगा।




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. एप्लिकेशन प्रारंभ करने में विफल (पोर्ट 8080) उपलब्ध नहीं है

  2. एम्बेडेड दस्तावेज़ों पर मोंगोइड कुल विधियां?

  3. MongoDB टेक्स्ट इंडेक्स और टेक्स्ट स्कोर में दस्तावेज़ की लंबाई को कैसे संभालता है?

  4. मोंगो में उप-दस्तावेज़ व्यवस्थित करने का सबसे अच्छा तरीका?

  5. क्या मोंगोडीबी के एकत्रीकरण ढांचे के साथ एकाधिक कॉलम समूह और योग करना संभव है?