U hebt gelijk dat de "standaard" voor het specificeren van meerdere velden in een query is dat elk veld dient als een voorwaardelijk filter en dus een EN-bewerking is.
U kunt MongoDB-query's uitvoeren met een OR-clausule door de $or-operand te gebruiken die de volgende syntaxis heeft:
db.col.find({$or:[clause1, clause2]})
Waar elke clausule een query kan zijn. $or hoeft geen operand op het hoogste niveau te zijn, maar als dit wel het geval is, kan MongoDB een index gebruiken voor elke afzonderlijke clausule.
In jouw voorbeeld wil je eindigen met deze vraag:
db.col.find({$or:[{"post_title", regex}, {"post_description", regex}]});
Die in Java kan worden gebouwd via:
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);