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