मुझे मोंगोड पर केस असंवेदनशील क्वेरी के साथ एक बहुत ही परेशानी की समस्या है।मोंगोडीबी केस कोष्ठक के साथ पाठ पर असंवेदनशील क्वेरी
मैं एक वेब एप्लिकेशन में MongoTemplate का उपयोग कर रहा हूं और मुझे संग्रह पर केस असंवेदनशील प्रश्न निष्पादित करने की आवश्यकता है।
caPITella capitata
:
इस कोडQuery q = new Query();
q.addCriteria(Criteria.where("myField")
.regex(Pattern.compile(fieldValue, Pattern.CASE_INSENSITIVE | Pattern.UNICODE_CASE)));
return mongoTemplate.findOne(q,MyClass.class);
मैं निम्न क्वेरी
{ "myField" : { "$regex" : "field value" , "$options" : "iu"}}
कि पूरी तरह से काम करता है जब मैं साधारण पाठ है, उदाहरण के लिए बनाने के साथ
लेकिन ... लेकिन ... जब टी यहां कोष्ठक() क्वेरी काम नहीं करता है। यह बिल्कुल भी काम नहीं करता है, यहां तक कि क्वेरी पाठ के रूप में दस्तावेज़ में लिखा है लिखा है ... उदाहरण:
क्वेरी 1:
{"myField" : "Ceratonereis (Composetia) costae" } -> 1 result (ok)
क्वेरी 2:
{ "myField" : {
"$regex" : "Ceratonereis (Composetia) costae" ,
"$options" : "iu"
}} -> no results (not ok)
प्रश्न 3:
{ "scientificName" : {
"$regex" : "ceratonereis (composetia) costae" ,
"$options" : "iu"
}} -> no results (....)
तो ... मैं कुछ गलत कर रहा हूं? मैं Pattern.compile() में शामिल करने के लिए कुछ पैटर्न भूल गया। कोई भी समाधान?
धन्यवाद
------ अद्यतन ------
user3561036 का जवाब मुझे लगाने की कैसे क्वेरी बनाया जाना चाहिए मदद की।
तो, मैं
q.addCriteria(Criteria.where("myField")
.regex(Pattern.compile(Pattern.quote(myFieldValue), Pattern.CASE_INSENSITIVE | Pattern.UNICODE_CASE)));
उत्पादन क्वेरी
{ "myField" : { "$regex" : "\\Qhaliclona (rhizoniera) sarai\\E" , "$options" : "iu"}}
कार्यों में क्वेरी इमारत को संशोधित करके सुलझा ली है।
आपने विकल्पों में 'u' (" $ विकल्प ":" iu ") का उपयोग क्यों किया? – Vishnu