How can I build an $or query for MongoDB using the Java driver? How can I build an $or query for MongoDB using the Java driver? mongodb mongodb

How can I build an $or query for MongoDB using the Java driver?


You are correct that the "default" for specifying multiple field in a query is that each field serves as a conditional filter, and thus is an AND operation.

You can perform MongoDB queries with an OR clause by using the $or operand which has the following syntax :

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

Where each clause can be a query. $or does not have to be a top level operand but if it is MongoDB can use an index for each seperate clause.

In your example you want to end up with this query :

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

Which can be constructed in Java through :

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


With filters you could build yours like:

import com.mongodb.client.model.Filters;...Bson filter = Filters.or(                    Filters.eq("post_title", regex),                     Filters.eq("post_description", regex)                  );