MongoDB的C++驅動程序在update()上返回一個void,與客戶端不同,客戶端返回一個寫入結果來指示正在更新的文檔數量。根據我的理解,影響0文檔的更新操作是完全合法的結果,因此不會引發異常。MongoDB C++驅動程序中的Upate DB
virtual void insert(const std::string &ns, BSONObj obj , int flags=0) = 0;
virtual void insert(const std::string &ns, const std::vector<BSONObj>& v , int flags=0) = 0;
virtual void remove(const std::string &ns , Query query, bool justOne = 0) = 0;
virtual void remove(const std::string &ns , Query query, int flags) = 0;
virtual void update(const std::string &ns,
Query query,
BSONObj obj,
bool upsert = false, bool multi = false) = 0;
virtual void update(const std::string &ns, Query query, BSONObj obj, int flags) = 0;
爲什麼我問這個的原因是因爲我通過DB執行的Upsert,我想知道,如果的Upsert創建新文檔或者更新的數據庫來代替。沒有寫結果,我無法有效地確定upsert的結果。
1)是否有爲什麼提供了C++的驅動程序
2)在這種情況下不歸路的原因,就是去取回寫結果,而無需執行對數據庫的查詢的正確方法。
,我期望你需要調用'getLastError'其中包含'擁有的該命令影響的文件數N'。 – WiredPrairie