如何使用C++驱动程序通过对象ID更新MongoDB
How to update MongoDB by Object ID with C++ driver?
我想我已经用尽了所有可用的文档。使用Mongo的C++BSON驱动程序,我想从Mongo中找到一条记录,然后根据找到的记录对象id对该记录进行更新。我遇到的主要问题是更新查询。我尝试过的一个不起作用的例子:
db.update("mydb.mycollection",
QUERY("_id" << ObjectID("521e68e5b9efcf5a9dff7052")),
BSON("$set" << BSON("somefield" << "11111")));
我找不到任何关于如何使用C++驱动程序从_id字段进行查询或基于_id字段更新的文档,在我的示例中,_id字段是我唯一的唯一字段。任何示例代码都将不胜感激,尤其是运行查找查询、提取对象ID,然后更新特定文档上的字段的代码。
我没有编译驱动程序,但我认为它正在转换为OID
?
db.update("mydb.mycollection", QUERY("_id" << OID("521e68e5b9efcf5a9dff7052")))
在任何情况下,这里有许多测试案例可能会/不会被证明是有用的,我过去曾使用这些案例来"学习"如何在文档非常差的驱动程序中做一些事情。
尝试此代码:
db.update("tutorial.persons",
BSON("name" << "Joe" << "age" << 33),
BSON("$inc" << BSON( "visits" << 1)));
我使用了WiredParie提供的非常有用的答案来弄清真相。。。。下面是一个代码示例,用于1)从现有查询中提取ObjectID("_id")字段(在这种情况下,结果变量称为"tx"),并将其与该查询的更新参数一起传递给更新查询
// Update order based on objectid
db.update("dakota.transaction",
QUERY("_id" << tx.getField("_id")),
BSON("$set" << BSON("somefield" << "11111")));
需要注意的是,WiredParie发布的答案在使用OID手动转换字符串时也是正确的-只是缺少mongo将数据更新为新所需的最后一组参数
相关文章:
- 什么时候调用组成单元对象的析构函数
- 通过 id 访问 QML 插槽中的嵌套对象(从 c++ 调用)
- "Extern"对象问题:错误:Id 返回 1 个退出状态
- C++ 在运行时获取具有 ID 的对象
- 如何通过id获取线程对象?
- 如何使用 API 获取 QML 对象的 id 属性C++
- 如何将字符串(ID)映射到新的子类对象C 的创建
- 如何通过先前存储的ID从结构对象中检索值?C
- 如何使用make_pair创建一对ID和struct(对象)
- 声明中的限定 ID 在"="令牌/对象计数器变量之前
- 获取每个类的 int Id,使用类名及其对象调用
- 通过 Box2d 中的 NSNotificationCenter 发送类对象C++。错误:没有从 'MyContact' 到 'id' 的可行转换
- C++:父对象在不调用方法的情况下更改其id属性
- 控件的动态对象 ID
- 如何使用C++驱动程序通过对象ID更新MongoDB
- 在std::unordered_map中分配ID后创建对象
- visual在c++中获取对象ID
- 选择随机数作为对象ID
- 我应该为我的不透明对象使用整数ID还是指针?
- 如何确定一个GL帧缓冲对象的宽度和高度只给出相应的id