क्रिस फुलस्टो का समाधान काम करेगा (+1), हालांकि, यह कुशल नहीं हो सकता है, खासकर यदि आपका संग्रह बहुत बड़ा है। गैर-रूट रेगुलर एक्सप्रेशन (वे जो ^
. से प्रारंभ नहीं होते हैं , जो स्ट्रिंग की शुरुआत में रेगुलर एक्सप्रेशन को एंकर करता है), और वे जो i
. का उपयोग करते हैं केस असंवेदनशीलता के लिए ध्वज अनुक्रमणिका का उपयोग नहीं करेगा, भले ही वे मौजूद हों।
एक वैकल्पिक विकल्प जिस पर आप विचार कर सकते हैं, वह है name
के लोअर-केस संस्करण को स्टोर करने के लिए अपने डेटा को असामान्य बनाना फ़ील्ड, उदाहरण के लिए name_lower
. के रूप में . फिर आप केस-असंवेदनशील सटीक मिलान जैसे:
db.collection.find({"name_lower": thename.toLowerCase()})
या उपसर्ग मिलान (एक रूटेड रेगुलर एक्सप्रेशन) के रूप में:
db.collection.find( {"name_lower":
{ $regex: new RegExp("^" + thename.toLowerCase(), "i") } }
);
ये दोनों क्वेरी name_lower
. पर एक इंडेक्स का इस्तेमाल करेंगी ।