3

我想我已经用尽了所有可用的文档。使用 Mongo 的 C++ BSON 驱动程序,我想从 Mongo 中找到一条记录,然后根据找到的记录对象 id 对该记录执行更新。我正在努力的主要领域是更新查询。我试过的一个例子不起作用:

db.update("mydb.mycollection",
          QUERY("_id" << ObjectID("521e68e5b9efcf5a9dff7052")),
          BSON("$set" << BSON("somefield" << "11111")));

我找不到关于如何使用 C++ 驱动程序根据 _id 字段进行查询或更新的文档,在我的示例中,这是我唯一的唯一字段。任何示例代码都将不胜感激,尤其是运行查找查询、选择 objectID,然后更新该特定文档上的字段的示例代码。

4

3 回答 3

3

我没有编译驱动程序,但是,我认为它正在转换为OID?

db.update("mydb.mycollection", QUERY("_id" << OID("521e68e5b9efcf5a9dff7052")))

无论如何,这里有许多测试用例可能/没有证明有用,我过去曾用它们来“学习”如何在文档非常差的驱动程序中做一些事情。

于 2013-08-29T01:54:46.170 回答
1

试试这个代码:

db.update("tutorial.persons",
       BSON("name" << "Joe" << "age" << 33),
       BSON("$inc" << BSON( "visits" << 1)));
于 2013-08-30T14:06:33.187 回答
0

我使用了来自 WiredPrarie 的非常有用的答案来深入了解这一点.... 下面是用于 1) 从现有查询中提取 ObjectID ("_id") 字段的代码示例(在本例中为结果变量称为“tx”,并将其与该查询的更新参数一起传递给更新查询。

// Update order based on objectid
db.update("dakota.transaction",
          QUERY("_id" << tx.getField("_id")),
          BSON("$set" << BSON("somefield" << "11111")));

应该注意的是,WiredPrarie 发布的答案在使用 OID 手动转换字符串时也是正确的 - 只是缺少 mongo 将数据更新为新数据所需的最后一组参数

于 2013-08-30T14:00:08.763 回答