To jest kod, którego teraz używam, w jaki sposób dodać atrybut "Ignoruj wielkość liter"?Sterownik MongoDB i Java: "Ignoruj wielkość liter" w zapytaniu
DBObject query = new BasicDBObject("prop", value);
Dzięki
To jest kod, którego teraz używam, w jaki sposób dodać atrybut "Ignoruj wielkość liter"?Sterownik MongoDB i Java: "Ignoruj wielkość liter" w zapytaniu
DBObject query = new BasicDBObject("prop", value);
Dzięki
Gdy miałem dokładnie problem, że nie był w stanie do kwerendy, pomijając sprawę. Skończyłem kopiować wartość, którą chciałem przeszukać, normalizując ją. W takim przypadku możesz utworzyć nową właściwość i przekonwertować ją na małe litery i utworzyć na niej indeks.
EDIT:
DBObject ref = new BasicDBObject();
ref.put("myfield", Pattern.compile(".*myValue.*" , Pattern.CASE_INSENSITIVE));
DBCursor cur = coll.find(ref);
Zastanawiam się, czy to działa?
db.iolog.find({$where:"this.firstname.toLowerCase()==\"telMan\".toLowerCase()"});
DBObject ref = new BasicDBObject();
ref.append("firstname", new BasicDBObject("$where","this.firstname.toLowerCase()=="+firstname+".toLowerCase()"));
mapValue = new HashMap<String, Object>();
mapValue.put("$options", "i");
mapValue.put("$regex", "smth");
searchMap.put("name", mapValue);
collection.find(new BasicDBObject(searchMap));
W przypadku jeśli używasz wiosna-java poniżej wymienionych jest sposób można je wyszukać w przypadku niewrażliwe sposób.
public List<Discussion> searchQuestionByText(String qText){
Query query = new Query();
query.addCriteria(Criteria.where("discussionName").regex(qText,"i"));
return mongoTemplate.find(query, Discussion.class);
}
Byłem też staramy się jak najlepiej wykorzystać realizacji „case niewrażliwy”. Jeśli używasz MongoDB Java driver 3.0 lub nowszego, powinieneś użyć następującego kodu z parametrem $ opcja! Jest bardzo łatwy w użyciu:
Document basicQuery = new Document();
basicQuery.append("key", new Document("$regex","value").append("$options","i"));
Pola "klucz" i "wartość" należy zmienić przy użyciu własnych danych.
(Zaleca się również wyszukiwanie przy użyciu parametru $ regex w celu pobrania informacji poprzez częściowe dopasowanie w przypadku, gdyby w bazie danych było więcej rekordów).
To była wersja 1.4 przy okazji. Może rzeczy się teraz zmieniły. –
Grając z konsolą, zdałem sobie sprawę, że wpisanie db.collection.find ({"prop":/value/i}) powoduje, że moje zapytanie jest niewrażliwe. Musi istnieć sposób włączenia atrybutu "i" przy użyciu sterownika Java, nawet jeśli za pośrednictwem zapytania Regex nie ma znaczenia. Wpisywanie zapytania DBObject = new BasicDBObject ("prop", "/" + value + "/ i") nie działa jednak. – Mark
Spróbuj. Mam nadzieję, że to, czego szukasz. –