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

MongoDB diacriticInSensitive खोज अपेक्षित और इसके विपरीत सभी उच्चारण (विशेषक चिह्न वाले शब्द) पंक्तियों को नहीं दिखा रहा है

चूंकि मोंगोडब 3.2 , पाठ अनुक्रमणिका विशेषक असंवेदनशील हैं:

<ब्लॉककोट>

संस्करण 3 के साथ, पाठ अनुक्रमणिका विशेषक असंवेदनशील है। अर्थात्, सूचकांक उन वर्णों के बीच अंतर नहीं करता है जिनमें विशेषक चिह्न होते हैं और उनके गैर-चिह्नित समकक्ष, जैसे कि é, , और e। अधिक विशेष रूप से, टेक्स्ट इंडेक्स यूनिकोड 8.0 कैरेक्टर डेटाबेस प्रोप लिस्ट में डायक्रिटिक्स के रूप में वर्गीकृत वर्णों को अलग करता है।

तो निम्नलिखित प्रश्न काम करना चाहिए:

db.Collection.find( { $text: { $search: "iphone"} } );
db.Collection.find( { name: { $regex: "iphone"} } );

लेकिन ऐसा लगता है कि डायरेसिस (¨) के साथ एक बग है, भले ही इसे यूनिकोड 8.0 सूची में डायक्रिटिक के रूप में कैटरराइज़ किया गया हो (JIRA पर जारी:सर्वर-29918)

समाधान

चूंकि मोंगोडब 3.4 आप संयोजन का उपयोग कर सकते हैं जो आपको इस प्रकार की क्वेरी करने की अनुमति देता है:

उदाहरण के लिए, अपना अपेक्षित आउटपुट प्राप्त करने के लिए, निम्न क्वेरी चलाएँ:

db.Collection.find({name: "iphone"}).collation({locale: "en", strength: 1})

यह आउटपुट होगा:

{ "_id" : 1, "name" : "iphone" }
{ "_id" : 2, "name" : "iphône" }
{ "_id" : 3, "name" : "iphonë" }
{ "_id" : 4, "name" : "iphônë" }

संयोजन में, strength प्रदर्शन करने के लिए तुलना का स्तर है

  • 1 :केवल मूल वर्ण
  • 2 :विशेषक संवेदनशील
  • 3 :केस सेंसिटिव + डायक्रिटिक सेंसिटिव



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongod शिकायत करता है कि कोई /data/db फ़ोल्डर नहीं है

  2. MongoDB को जोड़ना और बनाना SQL का उपयोग करके जुड़ता है:भाग 1

  3. कैसे Node.js में नेवला के साथ पृष्ठांकित करने के लिए?

  4. मोंगोडीबी ढूंढें ()

  5. MongoDB साझा क्लस्टर का समस्या निवारण