mongo shell語法:{ $or: [ { <expression1> }, { <expression2> }, ... , { <expressionN> } ] }
選擇器$or後面必須是數組,嚴格說來是BSON Array格式。如:
db.getCollection('db.test').find({$or:[{url:"url1"},{url:"url2"}]})
如果用C++代碼實現邏輯或查詢,方法1:
std::shared_ptr<MongoSession> session = MongoSessionFactory::GetSession();
BSONObjBuilder condition;
BSONArrayBuilder arr; //arr是用來構成$or查詢條件數組
arr.append(BSON("url" << "url1"));
arr.append(BSON("url" << "url2"));
condition.append("$or", arr.arr());
mongo::Query query(condition.obj());
std::unique_ptr<DBClientCursor> cursor =
session->get().query("db.test", query.sort("ts", 1));
方法2:
BSONObjBuilder a;
a.append("url", "url1");
BSONObjBuilder b;
b.append("url", "url2");
condition.append("$or", BSON_ARRAY(a.obj()<< b.obj()));