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()));