आप सही हैं कि एक क्वेरी में एकाधिक फ़ील्ड निर्दिष्ट करने के लिए "डिफ़ॉल्ट" यह है कि प्रत्येक फ़ील्ड एक सशर्त फ़िल्टर के रूप में कार्य करता है, और इस प्रकार एक AND ऑपरेशन है।
आप $ या ऑपरेंड का उपयोग करके MongoDB प्रश्नों को OR क्लॉज के साथ निष्पादित कर सकते हैं जिसमें निम्नलिखित सिंटैक्स है:
db.col.find({$or:[clause1, clause2]})
जहां प्रत्येक खंड एक प्रश्न हो सकता है। $या एक शीर्ष स्तर का ऑपरेंड होना जरूरी नहीं है, लेकिन अगर यह MongoDB है तो प्रत्येक अलग क्लॉज के लिए एक इंडेक्स का उपयोग कर सकता है।
अपने उदाहरण में आप इस प्रश्न को समाप्त करना चाहते हैं:
db.col.find({$or:[{"post_title", regex}, {"post_description", regex}]});
जिसे जावा में :
. के माध्यम से बनाया जा सकता है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);