MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Como posso construir uma consulta $or para o MongoDB usando o driver Java?


Você está certo de que o "padrão" para especificar vários campos em uma consulta é que cada campo serve como um filtro condicional e, portanto, é uma operação AND.

Você pode realizar consultas do MongoDB com uma cláusula OR usando o operando $or que tem a seguinte sintaxe:
db.col.find({$or:[clause1, clause2]})

Onde cada cláusula pode ser uma consulta. $ou não precisa ser um operando de nível superior, mas se for o MongoDB pode usar um índice para cada cláusula separada.

No seu exemplo, você deseja terminar com esta consulta:
db.col.find({$or:[{"post_title", regex}, {"post_description", regex}]});  

Que pode ser construído em Java através de:
DBObject clause1 = new BasicDBObject("post_title", regex);  
DBObject clause2 = new BasicDBObject("post_description", regex);    
BasicDBList or = new BasicDBList();
or.add(clause1);
or.add(clause2);
DBObject query = new BasicDBObject("$or", or);