मैं आपके डेटा का एक सामान्यीकृत संस्करण, और उस पर अनुक्रमणिका/खोज संग्रहीत करने की अनुशंसा करता हूं। यह रेगेक्स का उपयोग करने से काफी तेज होगा। निश्चित रूप से, आप "जॉन" के साथ "जॉन" को शामिल करके कुछ अधिक संग्रहण स्थान खाएंगे, लेकिन आपकी डेटा पहुंच तेज़ होगी क्योंकि आप केवल एक मानक $eq क्वेरी का उपयोग करने में सक्षम होंगे।
यदि आप रेगेक्स पर जोर देते हैं, तो मैं ^
. का उपयोग करने की सलाह देता हूं (लाइन की शुरुआत) और $
(पंक्ति का अंत) आपके खोज शब्द के आसपास। हालांकि, याद रखें कि आपको अपने खोज मूल्य से बचना चाहिए ताकि इसकी सामग्री को RegEx के रूप में न माना जाए।
यह काम करना चाहिए:
string escapedFindValue = System.Text.RegularExpressions.Regex.Escape(findValue);
new BsonRegularExpression(string.Format("^{0}$", escapedFindValue), "i");
या यदि आप एक नए फ्रेमवर्क संस्करण का उपयोग कर रहे हैं, तो आप स्ट्रिंग इंटरपोलेशन का उपयोग कर सकते हैं:
string escapedFindValue = System.Text.RegularExpressions.Regex.Escape(findValue);
new BsonRegularExpression($"^{escapedFindValue}$", "i");