Questo è il codice che sto usando ora, come posso aggiungere l'attributo "ignorare case"?MongoDB e driver Java: "ignore case" nella query
DBObject query = new BasicDBObject("prop", value);
Grazie
Questo è il codice che sto usando ora, come posso aggiungere l'attributo "ignorare case"?MongoDB e driver Java: "ignore case" nella query
DBObject query = new BasicDBObject("prop", value);
Grazie
Quando ho avuto il problema esatto, non ero in grado di interrogare ignorando caso. Ho finito per copiare il valore che volevo cercare normalizzandolo. In questo caso, puoi creare una nuova proprietà e convertirla in minuscolo e avere un indice su quello.
EDIT:
DBObject ref = new BasicDBObject();
ref.put("myfield", Pattern.compile(".*myValue.*" , Pattern.CASE_INSENSITIVE));
DBCursor cur = coll.find(ref);
Mi chiedo se funziona?
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));
Nel caso in cui se si utilizza Primavera-java di seguito menzionato è il modo in cui si può fare la ricerca in maniera case-insensitive.
public List<Discussion> searchQuestionByText(String qText){
Query query = new Query();
query.addCriteria(Criteria.where("discussionName").regex(qText,"i"));
return mongoTemplate.find(query, Discussion.class);
}
Stavo anche cercando di sfruttare al meglio l'implementazione "case insensitive". Se stai utilizzando lo MongoDB Java driver 3.0 o successivo, dovresti usare questo codice seguente, con il parametro $ $! È davvero facile da usare:
Document basicQuery = new Document();
basicQuery.append("key", new Document("$regex","value").append("$options","i"));
I campi "chiave" e "valore" devono essere modificati con i propri dati.
(Si consiglia inoltre di effettuare una ricerca con il parametro $ regex per recuperare informazioni tramite corrispondenza parziale nel caso si abbiano più record nel database).
Questa era la versione 1.4. Forse le cose ora sono cambiate. –
Giocando con la console, mi sono reso conto che digitando db.collection.find ({"prop":/value/i}) la mia query non è stata minimizzata. Ci deve essere un modo per abilitare l'attributo "i" usando il driver Java, anche se attraverso una query Regex non ha importanza. Digitando DBObject query = new BasicDBObject ("prop", "/" + value + "/ i") non funziona comunque. – Mark
Provalo. Spero sia quello che stai cercando. –