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

MongoDb खोज प्रदर्शन

व्याख्या पोस्ट करने के लिए धन्यवाद। आइए एक-एक करके समस्याओं का समाधान करें।

सबसे पहले, मुझे नहीं लगता कि यह प्रश्न वही करता है जो आपको लगता है कि यह करता है / करना चाहता है। मैं आपको उदाहरण के द्वारा मोंगो शेल का उपयोग करके दिखाता हूं। शेल में अनुवादित आपकी क्वेरी है

{ "$or" : [
    { "$and" : [
        { "SearchTerms.Key" : "ClientId" }, 
        { "SearchTerms.Value" : "xxx" }
    ]},
    { "$and" : [
        { "SearchTerms.Key" : "CustomerName" },     
        { "SearchTerms.Value" : "Jan" }
    ]}
]}

यह क्वेरी ऐसे दस्तावेज़ ढूंढती है जहां या तो कुछ Key "ClientId" मान और कुछ Value . है इसका मान "xxx" या कुछ Key है "CustomerName" मान और कुछ Value . है मूल्य "जनवरी"। कुंजी और मान को एक ही सरणी तत्व का हिस्सा होने की आवश्यकता नहीं है . उदाहरण के लिए, निम्न दस्तावेज़ आपकी क्वेरी से मेल खाता है

{ "SearchTerms" : [
        { "Key" : "ClientId", "Value" : 691 }, 
        { "Key" : "banana", "Value" : "xxx" }
    ]
}

मैं अनुमान लगा रहा हूं कि आपका वांछित व्यवहार उन दस्तावेज़ों से सटीक रूप से मेल खाना है जिनमें Key . है और Value एक ही सरणी तत्व में। $elemMatch ऑपरेटर नौकरी के लिए उपकरण है:

{ "$or" : [
    { "SearchTerms" : { "$elemMatch" : { "Key" : "ClientId", "Value" : "xxx" } } },
    { "SearchTerms" : { "$elemMatch" : { "Key" : "CustomerName", "Value" : "Jan" } } }
]}

दूसरा, मुझे नहीं लगता कि यह स्कीमा वह है जिसे आप ढूंढ रहे हैं। आप अपने उपयोग के मामले का वर्णन नहीं करते हैं, इसलिए मैं आश्वस्त नहीं हो सकता, लेकिन उस ब्लॉग पोस्ट में वर्णित स्थिति एक बहुत ही दुर्लभ स्थिति है जहां आपको मनमाने पर स्टोर और खोज करने की आवश्यकता होती है। कुंजी-मूल्य जोड़े जो एक दस्तावेज़ से दूसरे दस्तावेज़ में बदल सकते हैं। यह उपयोगकर्ताओं को कस्टम मेटाडेटा डालने देने जैसा है। लगभग कोई भी एप्लिकेशन ऐसा नहीं करना चाहता है या करने की आवश्यकता नहीं है। ऐसा लगता है कि आपका एप्लिकेशन ग्राहकों के बारे में जानकारी संग्रहीत कर रहा है, संभवत:किसी आंतरिक सिस्टम के लिए। आपको एक डेटा मॉडल परिभाषित करने में सक्षम होना चाहिए आपके ग्राहकों के लिए जो ऐसा दिखता है

{
    "CustomerId" : 1234,
    "CustomerName" : "Jan",
    "ClientId" : "xpj1234",
    ...
}

यह चीजों को नाटकीय रूप से सरल और बेहतर बनाएगा। मुझे लगता है कि तार यहां पार हो गए क्योंकि कभी-कभी लोग मोंगोडीबी को "स्कीमालेस" कहते हैं और ब्लॉग पोस्ट "स्कीमालेस" दस्तावेजों के बारे में बात करता है। ब्लॉग पोस्ट वास्तव में स्कीमालेस दस्तावेज़ों के बारे में बात कर रहा है जहाँ आप नहीं जानते कि वहाँ क्या होने वाला है। अधिकांश अनुप्रयोगों को ठीक-ठीक पता होना चाहिए कि संग्रह में दस्तावेज़ों की सामान्य संरचना क्या होगी।

अंत में, मुझे लगता है कि इसके आधार पर हम इस मुद्दे को अभी के लिए धीमी क्वेरी के साथ अनदेखा कर सकते हैं। बेझिझक कोई अन्य प्रश्न पूछें या अतिरिक्त स्पष्टीकरण के साथ इसे संपादित करें यदि आपको अधिक सहायता की आवश्यकता है या यदि मेरे द्वारा यहां कही गई बातों को ध्यान में रखने के बाद समस्या दूर नहीं होती है।



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongo पर दिनांक स्ट्रिंग (आरोही) के आधार पर छाँटें

  2. MongoDB + JS दिनांक स्थानांतरित -1 दिन

  3. मोंगो में प्रत्येक शार्ड के लिए शार्डिंग रेंज को कैसे परिभाषित करें?

  4. क्या मैं MongoDB में कुल क्वेरी में प्रत्येक के लिए आवेदन कर सकता हूं?

  5. MongoRepository (स्प्रिंग बूट) के लिए बीन नहीं मिल सका