2010-11-01 18 views

Respuesta

14

Cuando tuve el problema exacto, yo no era capaz de consultar al ignorar caso. Terminé copiando el valor que quería buscar para normalizarlo. En este caso, puede crear una nueva propiedad y convertirla a minúsculas y tener un índice sobre eso.

EDIT:

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

Me pregunto si eso funciona?

+0

Esta fue la versión 1.4 por cierto. Tal vez las cosas han cambiado ahora. –

+1

Al jugar con la consola, me di cuenta de que escribir db.collection.find ({"prop":/value/i}) hace que mi consulta no sea sensible. Debe haber una manera de habilitar el atributo "i" utilizando el controlador de Java, incluso si a través de una consulta Regex no importa. Sin embargo, al escribir DBObject query = new BasicDBObject ("prop", "/" + valor + "/ i") no funciona. – Mark

+0

Pruébalo. Espero que sea lo que estás buscando. –

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

En caso si usted está utilizando Primavera-java mencionado a continuación es la forma en que puede hacer que buscar de manera sensible a las mayúsculas.

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

También estaba tratando de obtener el mejor uso de la implementación "insensible a mayúsculas y minúsculas". Si está usando MongoDB Java driver 3.0 o posterior, debe usar este código siguiente, con el parámetro $ option! Es realmente fácil de usar:

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

Los campos "clave" y "valor" deben modificarse con sus propios datos.

(también te aconsejo que busques con parámetro $ regex para recuperar información mediante la coincidencia parcial en caso de que tengas más y más registros en la base de datos).

Cuestiones relacionadas