【发布时间】:2014-10-28 07:03:47
【问题描述】:
Mongo DB 的 C++ 驱动程序在 update() 上返回 void,这与客户端返回写入结果以指示正在更新的文档数量不同。据我了解,影响 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;
我之所以问这个问题是因为我正在通过数据库执行 Upsert,我想知道 Upsert 是创建了新文档还是更新了数据库。如果没有写入结果,我无法有效地确定 upsert 的结果。
1)c++驱动不提供return是有原因的吗
2) 在这种情况下,是否有适当的方法来检索写入结果,而无需对数据库执行查询。
【问题讨论】:
-
我希望您需要调用
getLastError,其中包含受命令影响的文档数的n。