वह वास्तविक त्रुटि बताती है कि आपका मोंगोडब 2.6 से कम का संस्करण है (इसलिए उस तरह से कोई पाठ खोज नहीं)। लेकिन आप वैसे भी दो कारणों से ऐसा नहीं कर सकते।
-
एक
$or
एक्सप्रेशन में केवल एक . हो सकता है विशेष अनुक्रमणिका व्यंजक, तर्कों में या तो "पाठ" या "भू-स्थानिक" होना। -
आप "दो" विभिन्न क्षेत्रों पर पाठ खोजों की अपेक्षा कर रहे हैं और आपके पास केवल एक . हो सकता है प्रति संग्रह पाठ अनुक्रमणिका। हालाँकि उस एकल अनुक्रमणिका को दस्तावेज़ में कई क्षेत्रों में फैलाया जा सकता है। लेकिन आप अलग-अलग क्षेत्रों के लिए अलग-अलग खोज शब्द नहीं पूछ सकते।
दस्तावेज़ीकरण उद्धरण :
और यह भी कहना चाहिए "आप $or
. का उपयोग नहीं कर सकते एक $text
. के साथ अभिव्यक्ति या $near
ऑपरेटर जहां या तो एक से अधिक स्थितियों में उपयोग किया जाता है।" लेकिन वह छोटी सी जानकारी गायब है, लेकिन फिर भी आप ऐसा नहीं कर सकते।
आपका सिंटैक्स आम तौर पर सही नहीं है, लेकिन MongoDB के समर्थित संस्करण में सही सिंटैक्स के साथ भी आपको $or
का उपयोग करने का प्रयास करने में त्रुटि मिलेगी इस तरह:
Error: error: {
"$err" : "Can't canonicalize query: BadValue Too many text expressions",
"code" : 17287
}
तो इसे हल करने के लिए आपको चाहिए:
-
$text
. का समर्थन करने वाला 2.6 या इससे अधिक का MongoDB सर्वर संस्करण होना सिंटैक्स (या कमांड फॉर्म के साथ लाइव) -
एकाधिक क्षेत्रों में अनुक्रमण के साथ रहने और एकल अनुक्रमणिका का उपयोग करने के लिए।
-
अपनी "या" शर्तों के स्थान पर "पृथक प्रश्नों" को निष्पादित करने के लिए और अपने क्लाइंट एपीआई इंटरफ़ेस में परिणामों को "गठबंधन" करने के लिए।
MongoDB टेक्स्ट सर्च के साथ इस तरह की "या" स्थितियां प्राप्त करने का यही एकमात्र तरीका है।