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

वस्तु सरणियों बनाम वस्तुओं पर मोंगो अनुक्रमण

दूसरे मामले में पूछताछ निश्चित रूप से बहुत आसान होगी, जहां 'समूह' उप-दस्तावेजों की एक सरणी है, प्रत्येक में 'आईडी' और 'नाम' है।

मोंगो "वाइल्डकार्ड" प्रश्नों का समर्थन नहीं करता है, इसलिए यदि आपके दस्तावेज़ों को पहले तरीके से संरचित किया गया था और आप "हाय" मान के साथ एक उप-दस्तावेज़ ढूंढना चाहते थे, लेकिन यह नहीं जानते थे कि कुंजी 152 थी, तो आप नहीं कर पाएंगे इसे करें। दूसरी दस्तावेज़ संरचना के साथ, आप आसानी से {"groups.name":"hi"} के लिए क्वेरी कर सकते हैं।

एम्बेडेड ऑब्जेक्ट्स की क्वेरी के बारे में अधिक जानकारी के लिए, कृपया "डॉट नोटेशन (ऑब्जेक्ट्स में पहुंचना)" शीर्षक वाला दस्तावेज़ देखें http://www.mongodb.org/display/DOCS/Dot+Notation+%28Reaching+into+Objects%29 "उन्नत क्वेरीज़" दस्तावेज़ीकरण के "ऐरे में मान" और "एम्बेडेड ऑब्जेक्ट में मान" अनुभाग भी उपयोगी हैं:http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-ValueinanArray

{'groups.id':1} पर एक अनुक्रमणिका के लिए, प्रत्येक दस्तावेज़ में प्रत्येक "समूह" सरणी में प्रत्येक "id" कुंजी के लिए एक अनुक्रमणिका प्रविष्टि बनाई जाएगी। "समूह" पर एक अनुक्रमणिका के साथ, प्रति दस्तावेज़ केवल एक अनुक्रमणिका प्रविष्टि बनाई जाएगी।

यदि आपके पास दूसरे प्रकार के दस्तावेज़ हैं, और समूहों पर एक इंडेक्स है, तो इंडेक्स का उपयोग करने के लिए आपके प्रश्नों को पूरे उप-दस्तावेजों से मेल खाना होगा। उदाहरण के लिए, दस्तावेज़ दिया गया:

{ "_id" : 1, "groups" : [ { "id" : 152, "name" : "hi" }, { "id" : 111, "name" : "group2" } ] }

क्वेरी

db.<collectionName>.find({groups:{ "id" : 152, "name" : "hi" }}) 

अनुक्रमणिका का उपयोग करेगा, लेकिन क्वेरीज़

db.<collectionName>.find({"groups":{$elemMatch:{name:"hi"}}})

या

db.<collectionName>.find({"groups.name":"hi"})

नहीं होगा।

आपके द्वारा बनाई जाने वाली अनुक्रमणिका (एस) इस बात पर निर्भर होनी चाहिए कि आप किन प्रश्नों का सबसे अधिक प्रदर्शन करेंगे।

आप .explain() कमांड के साथ प्रयोग कर सकते हैं जिसके साथ (यदि कोई हो) आपके प्रश्नों का उपयोग कर रहे हैं। http://www.mongodb.org/display/DOCS/Explain पहली पंक्ति, "कर्सर" आपको बताएगी कि किस इंडेक्स का उपयोग किया जा रहा है। "कर्सर":"बेसिक कर्सर" इंगित करता है कि एक पूर्ण संग्रह स्कैन किया जा रहा है।

दस्तावेज़ीकरण में अनुक्रमण के बारे में अधिक जानकारी है:http://www.mongodb.org/display /DOCS/सूचकांक

उपरोक्त लिंक का "इंडेक्सिंग ऐरे एलिमेंट्स" अनुभाग "मल्टीकीज़" शीर्षक वाले दस्तावेज़ से जुड़ा है:http://www.mongodb.org/display/DOCS/Multikeys

उम्मीद है कि इससे आपकी समझ में सुधार होगा कि एम्बेडेड दस्तावेज़ों पर क्वेरी कैसे करें, और इंडेक्स का उपयोग कैसे किया जाता है। कृपया हमें बताएं कि क्या आपके कोई अनुवर्ती प्रश्न हैं!




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. किसी अन्य फ़ील्ड mongodb द्वारा विशिष्ट मान समूह खोजें

  2. नेवले में केवल विशिष्ट क्षेत्रों को आबाद करना

  3. मोंगोडब डॉट फील्ड अपडेट

  4. MongoDB और Node.js में गतिशील प्रश्न

  5. मैं MongoDB एकत्रीकरण पाइपलाइन में नेस्टेड जॉइन (3 या अधिक संग्रह में शामिल) कैसे कर सकता हूं?