न केवल अपेक्षित व्यवहार पूरी तरह से प्रलेखित है। लेकिन मुझे आपका दावा भी झूठा लगता है। एक मानक नमूने पर जो आपके द्वारा निर्दिष्ट शर्तों को पूरा कर सकता है, परिणाम दिखाए गए अनुसार होंगे। लेकिन पहले दस्तावेज़ीकरण संदर्भ:
फिर मान्य क्वेरी के आउटपुट की व्याख्या करें:
{
"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()
क्वेरी इंजन एक समय में केवल एक अनुक्रमणिका का चयन कर सकता है।
आधुनिक संस्करणों को त्रुटि के साथ बहुत विशिष्ट रेखा की रिपोर्ट करनी चाहिए:
तो फ़ील्ड के "सभी" आवश्यक हैं और वे असमानता ऑपरेटरों का उपयोग किए बिना एक सटीक मिलान "होना चाहिए"।
यदि आप "सटीक मिलान" शर्तों के साथ अपनी क्वेरी के हिस्से के रूप में "हमेशा" अन्य फ़ील्ड का उपयोग नहीं करने जा रहे हैं तो आप टेक्स्ट खोज के साथ एक कंपाउंड इंडेक्स नहीं बना सकते हैं।