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

मोंगो में उप-दस्तावेज़ अनुक्रमणिका

आप या तो कर सकते हैं:

> db.collection.ensureIndex({"data.name": 1,"data.age":1, "data.job" : 1})
> db.collection.ensureIndex({"data": 1})

यह उप दस्तावेज़ों पर अनुक्रमणिका-ऑन-एम्बेडेड-फ़ील्ड और अनुक्रमणिका के अंतर्गत दस्तावेज़ीकरण में चर्चा की गई है

उप दस्तावेज़ अनुभाग का महत्वपूर्ण खंड है 'उपदस्तावेज़ों पर समानता मिलान करते समय, फ़ील्ड ऑर्डर मायने रखता है और उप-दस्तावेज़ बिल्कुल मेल खाना चाहिए।'

इसका मतलब है कि साधारण प्रश्नों के लिए 2 अनुक्रमणिका समान हैं।

हालाँकि, जैसा कि उप-दस्तावेज़ उदाहरण से पता चलता है, आप कुछ दिलचस्प परिणाम प्राप्त कर सकते हैं (जिसकी आप उम्मीद नहीं कर सकते हैं) यदि आप किसी विशिष्ट क्षेत्र के विपरीत पूरे उप-दस्तावेज़ को अनुक्रमित करते हैं और फिर एक तुलना ऑपरेटर करते हैं (जैसे $gte ) - यदि आप एक विशिष्ट उप क्षेत्र को अनुक्रमित करते हैं तो आपको कम लचीला, लेकिन संभावित रूप से अधिक उपयोगी सूचकांक मिलता है।

यह वास्तव में आपके उपयोग के मामले पर निर्भर करता है।

वैसे भी, एक बार जब आप इंडेक्स बना लेते हैं तो आप जांच सकते हैं कि किसके साथ बनाया गया है:

> db.collection.getIndexes()
[
{
    "v" : 1,
    "key" : {
        "_id" : 1
    },
    "ns" : "test.collection",
    "name" : "_id_"
},
{
    "v" : 1,
    "key" : {
        "data.name" : 1,
        "data.age" : 1,
        "data.job" : 1
    },
    "ns" : "test.collection",
    "name" : "data.name_1_data.age_1_data.job_1"
}

]

जैसा कि आप आउटपुट से देख सकते हैं कि इसने data.name_1_data.age_1_data.job_1 नामक एक नई कुंजी बनाई है। (_id_ अनुक्रमणिका हमेशा बनाई जाती है)।

यदि आप अपनी नई अनुक्रमणिका का परीक्षण करना चाहते हैं तो आप यह कर सकते हैं:

> db.collection.insert({data:{name: "A",age:"B", job : "C"}})
> db.collection.insert({data:{name: "A1",age:"B", job : "C"}})
> db.collection.find({"data.name" : "A"}).explain()
{
    "cursor" : "BtreeCursor data.name_1_data.age_1_data.job_1",
     .... more stuff

मुख्य बात यह है कि आप देख सकते हैं कि आपकी नई अनुक्रमणिका का उपयोग किया गया था (BtreeCursor data.name_1_data.age_1_data.job_1 कर्सर फ़ील्ड में यह इंगित करता है कि यह मामला है)। यदि आप "cursor" : "BasicCursor" . देखते हैं , तब आपकी अनुक्रमणिका का उपयोग नहीं किया गया था।

अधिक विस्तृत जानकारी के लिए यहां देखें।



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. मोंगोडब समूह और सॉर्ट

  2. MongoDB त्रुटि 111 . से कनेक्शन से इनकार कर दिया

  3. मोंगोडीबी $concatArrays

  4. क्या आपको MongoDB जर्नलिंग सक्षम करनी चाहिए?

  5. डेटाटाइम के साथ मोंगोडीबी/पायमोंगो क्वेरी