MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Come posso creare una query $ o per MongoDB utilizzando il driver Java?

Hai ragione sul fatto che il "predefinito" per specificare più campi in una query è che ogni campo funge da filtro condizionale e quindi è un'operazione AND.

Puoi eseguire query MongoDB con una clausola OR utilizzando l'operando $or che ha la seguente sintassi:

db.col.find({$or:[clause1, clause2]})

Dove ogni clausola può essere una query. $o non deve essere un operando di primo livello, ma se è MongoDB può utilizzare un indice per ogni clausola separata.

Nel tuo esempio vuoi finire con questa query :

db.col.find({$or:[{"post_title", regex}, {"post_description", regex}]});  

Che può essere costruito in Java tramite :

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);