2010-11-01 11 views

उत्तर

14

जब मैं सटीक समस्या थी, मैं मामले की अनदेखी करके क्वेरी करने के लिए सक्षम नहीं था। मैंने उस मूल्य की प्रतिलिपि बनाई जो मैं इसे सामान्य बनाना चाहता था। इस मामले में, आप एक नई संपत्ति बना सकते हैं और इसे कम मामले में परिवर्तित कर सकते हैं और उस पर एक अनुक्रमणिका कर सकते हैं।

संपादित करें:

DBObject ref = new BasicDBObject(); 
ref.put("myfield", Pattern.compile(".*myValue.*" , Pattern.CASE_INSENSITIVE)); 
DBCursor cur = coll.find(ref); 

मुझे आश्चर्य है कि अगर काम करता है?

+0

यह संस्करण 1.4 था। शायद चीजें अब बदल गई हैं। –

+1

कंसोल के साथ बजाना, मुझे एहसास हुआ कि टाइपिंग db.collection.find ({"prop":/value/i}) मेरे क्वेरी केस को असंवेदनशील बनाता है। जावा ड्राइवर का उपयोग करके "i" विशेषता को सक्षम करने का एक तरीका होना चाहिए, भले ही रेगेक्स क्वेरी के माध्यम से इससे कोई फर्क नहीं पड़ता। टाइपिंग DBObject क्वेरी = नया BasicDBObject ("prop", "/" + value + "/ i") हालांकि काम नहीं करता है। – Mark

+0

इसे आज़माएं। मुझे उम्मीद है कि आप जो खोज रहे हैं। –

0
db.iolog.find({$where:"this.firstname.toLowerCase()==\"telMan\".toLowerCase()"}); 
DBObject ref = new BasicDBObject(); 
ref.append("firstname", new BasicDBObject("$where","this.firstname.toLowerCase()=="+firstname+".toLowerCase()")); 
-1
mapValue = new HashMap<String, Object>(); 
mapValue.put("$options", "i"); 
mapValue.put("$regex", "smth"); 
searchMap.put("name", mapValue); 
collection.find(new BasicDBObject(searchMap)); 
3

मामले में यदि आप नीचे उल्लेख वसंत-जावा का उपयोग कर रहे जिस तरह से आप यह केस-संवेदी ढंग से खोज कर सकते हैं।

public List<Discussion> searchQuestionByText(String qText){ 
     Query query = new Query(); 
     query.addCriteria(Criteria.where("discussionName").regex(qText,"i")); 
     return mongoTemplate.find(query, Discussion.class);  
    } 
0

मैं "केस असंवेदनशील" कार्यान्वयन का सबसे अच्छा उपयोग करने का भी प्रयास कर रहा था। यदि आप MongoDB Java driver 3.0 या बाद में उपयोग कर रहे हैं, तो आपको $ विकल्प पैरामीटर के साथ इस निम्न कोड का उपयोग करना चाहिए! यह वास्तव में उपयोग करने के लिए आसान है:

Document basicQuery = new Document(); 
basicQuery.append("key", new Document("$regex","value").append("$options","i")); 

क्षेत्रों "कुंजी" और "मूल्य" अपने खुद के डेटा के साथ बदलने की जरूरत है।

(मैं आपको $ regex पैरामीटर के साथ खोज करने के लिए सलाह देता हूं ताकि आप डेटाबेस में अधिक से अधिक रिकॉर्ड प्राप्त कर सकें) में आंशिक मिलान के माध्यम से जानकारी प्राप्त करने के लिए।

संबंधित मुद्दे