Bạn nói đúng rằng "mặc định" để chỉ định nhiều trường trong một truy vấn là mỗi trường đóng vai trò như một bộ lọc có điều kiện và do đó là một phép toán AND.
Bạn có thể thực hiện các truy vấn MongoDB với mệnh đề OR bằng cách sử dụng $ hoặc toán hạng có cú pháp sau:
db.col.find({$or:[clause1, clause2]})
Trong đó mỗi mệnh đề có thể là một truy vấn. $ hoặc không nhất thiết phải là toán hạng cấp cao nhất nhưng nếu là MongoDB có thể sử dụng một chỉ mục cho mỗi mệnh đề riêng biệt.
Trong ví dụ của bạn, bạn muốn kết thúc với truy vấn này:
db.col.find({$or:[{"post_title", regex}, {"post_description", regex}]});
Có thể xây dựng trong Java thông qua:
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);