MongoDB C++ driver之$or查詢

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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章