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

कई क्षेत्रों द्वारा MongoDB पाठ खोज फ़िल्टर

न केवल अपेक्षित व्यवहार पूरी तरह से प्रलेखित है। लेकिन मुझे आपका दावा भी झूठा लगता है। एक मानक नमूने पर जो आपके द्वारा निर्दिष्ट शर्तों को पूरा कर सकता है, परिणाम दिखाए गए अनुसार होंगे। लेकिन पहले दस्तावेज़ीकरण संदर्भ:

फिर मान्य क्वेरी के आउटपुट की व्याख्या करें:

{
    "queryPlanner" : {
       "plannerVersion" : 1,
       "namespace" : "test.mycollection",
       "indexFilterSet" : false,
       "parsedQuery" : {
           "$and" : [
               {
                   "cid" : {
                       "$eq" : 2
                   }
               },
               {
                   "uid" : {
                       "$eq" : 1
                   }
               },
               {
                   "$text" : {
                       "$search" : "cat",
                       "$language" : ""
                   }
               }
          ]
      },
      "winningPlan" : {
          "stage" : "TEXT",
          "indexPrefix" : {
               "uid" : 1,
               "cid" : 2
          },
          "indexName" : "uid_1_cid_1_content_text",
          "parsedTextQuery" : {

          }
      },
      "rejectedPlans" : [ ]
  },
  "serverInfo" : {
      "host" : "trashbox",
       "port" : 27017,
       "version" : "3.0.0",
       "gitVersion" : "a841fd6394365954886924a35076691b4d149168"
  },
  "ok" : 1
}

इसलिए यदि आप उन प्रश्नों को जारी करना चाहते हैं जिनका एक अलग पैटर्न "कंपाउंड कुंजी" है जिसे आपने वास्तव में बनाया है और जो स्पष्ट रूप से निर्दिष्ट नियमों को पूरा करता है तो आपको संभवतः मुख्य बिंदु पर भी ध्यान देना चाहिए:

तो "किसी भी रूप" कंपाउंड या अन्य में, यदि आप मोंगोडीबी टेक्स्ट इंडेक्स की एक से अधिक परिभाषा चाहते हैं तो आप ऐसा नहीं कर सकते हैं। यही बात "भू-स्थानिक" सूचकांकों पर भी लागू होती है, साथ ही सामान्य विचार यह भी है कि $or अभिव्यक्ति, या एक .sort() क्वेरी इंजन एक समय में केवल एक अनुक्रमणिका का चयन कर सकता है।

आधुनिक संस्करणों को त्रुटि के साथ बहुत विशिष्ट रेखा की रिपोर्ट करनी चाहिए:

तो फ़ील्ड के "सभी" आवश्यक हैं और वे असमानता ऑपरेटरों का उपयोग किए बिना एक सटीक मिलान "होना चाहिए"।

यदि आप "सटीक मिलान" शर्तों के साथ अपनी क्वेरी के हिस्से के रूप में "हमेशा" अन्य फ़ील्ड का उपयोग नहीं करने जा रहे हैं तो आप टेक्स्ट खोज के साथ एक कंपाउंड इंडेक्स नहीं बना सकते हैं।




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. mongodb प्रत्येक पुनर्प्राप्त दस्तावेज़ में काउंटर जोड़ें

  2. मोंगोडीबी $dateToString

  3. किसी दस्तावेज़ फ़ील्ड में संग्रहीत सरणी पर पृष्ठ पर अंक लगाना

  4. काउंटर संग्रह का उपयोग कर नोड-मोंगोडब-मूल में ऑटो वृद्धि

  5. arrayFilters के साथ फ़िल्टर किए गए पोजिशनल ऑपरेटर का उपयोग करके अपडेट कैसे लागू करें