Masz rację, że "domyślnym" przy określaniu wielu pól w zapytaniu jest to, że każde pole służy jako filtr warunkowy, a zatem jest operacją AND.
Możesz wykonywać zapytania MongoDB z klauzulą OR, używając operandu $or, który ma następującą składnię:
db.col.find({$or:[clause1, clause2]})
Gdzie każda klauzula może być zapytaniem. $albo nie musi być operandem najwyższego poziomu, ale jeśli tak, MongoDB może użyć indeksu dla każdej oddzielnej klauzuli.
W swoim przykładzie chcesz zakończyć z tym zapytaniem :
db.col.find({$or:[{"post_title", regex}, {"post_description", regex}]});
Które można zbudować w Javie poprzez:
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);