Mongo DB C和x2B中的Upate DB+;司机 Mango DB的C++驱动程序在UpDebug()上返回一个空洞,不同于返回写结果的客户机,以指示正在更新的文档数量。据我所知,影响0个文档的更新操作是完全合法的结果,因此不会引发异常 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; virtualvoidinsert(const std::string&ns,BSONObj obj,int flags=0)=0; 虚空插入(const std::string&ns,const std::vector&v,int flags=0)=0; 虚拟void remove(const std::string&ns,Query Query,bool justOne=0)=0; 虚拟void remove(const std::string&ns,Query Query,int flags)=0; 虚拟无效更新(常量std::string&ns, 查询查询, BSONObj obj, bool upsert=false,bool multi=false=0; 虚拟无效更新(const std::string&ns,Query Query,BSONObj obj,int flags)=0;

Mongo DB C和x2B中的Upate DB+;司机 Mango DB的C++驱动程序在UpDebug()上返回一个空洞,不同于返回写结果的客户机,以指示正在更新的文档数量。据我所知,影响0个文档的更新操作是完全合法的结果,因此不会引发异常 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; virtualvoidinsert(const std::string&ns,BSONObj obj,int flags=0)=0; 虚空插入(const std::string&ns,const std::vector&v,int flags=0)=0; 虚拟void remove(const std::string&ns,Query Query,bool justOne=0)=0; 虚拟void remove(const std::string&ns,Query Query,int flags)=0; 虚拟无效更新(常量std::string&ns, 查询查询, BSONObj obj, bool upsert=false,bool multi=false=0; 虚拟无效更新(const std::string&ns,Query Query,BSONObj obj,int flags)=0;,c++,mongodb,C++,Mongodb,我之所以问这个问题,是因为我正在通过数据库执行Upsert,我想知道Upsert是创建了新文档还是更新了数据库。如果没有写入结果,我无法有效地确定upsert的结果 1)有没有理由为C++驱动程序< /P>提供不返回? 2) 在这种情况下,是否有一种正确的方法来检索写结果,而不必对数据库执行查询GETLASTRORROR()只返回新的遗留(RealCyy1.0.0 RC0)C++驱动程序中的错误字符串: std::string getLastError(bool fsync=false,boo

我之所以问这个问题,是因为我正在通过数据库执行Upsert,我想知道Upsert是创建了新文档还是更新了数据库。如果没有写入结果,我无法有效地确定upsert的结果

1)有没有理由为C++驱动程序< /P>提供不返回? 2) 在这种情况下,是否有一种正确的方法来检索写结果,而不必对数据库执行查询

GETLASTRORROR()只返回新的遗留(RealCyy1.0.0 RC0)C++驱动程序中的错误字符串: std::string getLastError(bool fsync=false,bool j=false,int w=0,int wtimeout=0); 我看不出如何检索写入结果。

getLastErrorDetailed()
似乎就是答案:

(*conn)->update(...);    
BSONObj obj = (*conn)->getLastErrorDetailed();      
const string err_msg = (*conn)->getLastErrorString(obj);    
int n = obj.getIntField("n");    

我希望您需要调用
getLastError
,它包含
n
,其中包含受命令影响的文档计数。