gpt4 book ai didi

c++ - 在 Mongodb C++ 驱动程序中更新数据库

转载 作者:行者123 更新时间:2023-11-28 06:52:10 26 4
gpt4 key购买 nike

Mongo DB 的 C++ 驱动程序在 update() 上返回一个空值,这与客户端返回写入结果以指示正在更新的文档数不同。根据我的理解,影响 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;

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

1)c++驱动不提供return是什么原因

2) 在这种情况下,是否有一种正确的方法来检索写入结果而不必在数据库上执行查询。

最佳答案

getLastErrorDetailed() 似乎是答案:

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

关于c++ - 在 Mongodb C++ 驱动程序中更新数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23749813/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com