我想我已经用尽了所有可用的文档。使用Mongo的C ++ BSON驱动程序,我想从Mongo找到一条记录,然后根据找到的记录对象id对该记录执行更新。我正在努力的主要领域是更新查询。我尝试过的一个例子不起作用:
db.update("mydb.mycollection",
QUERY("_id" << ObjectID("521e68e5b9efcf5a9dff7052")),
BSON("$set" << BSON("somefield" << "11111")));
我无法找到关于如何使用C ++驱动程序来查询或更新基于_id字段的文档,在我的示例中,这是我唯一的唯一字段。任何示例代码都将非常受欢迎,尤其是运行查询查询的代码,选择objectID,然后更新该特定文档的字段。
答案 0 :(得分:3)
我没有编译驱动程序,但是,我认为它正在转换为OID
?
db.update("mydb.mycollection", QUERY("_id" << OID("521e68e5b9efcf5a9dff7052")))
在任何情况下,有许多位于here的测试用例可能/不能证明我过去用来“学习”如何在记录很少的驱动程序中做一些事情。
答案 1 :(得分:1)
试用此代码:
db.update("tutorial.persons",
BSON("name" << "Joe" << "age" << 33),
BSON("$inc" << BSON( "visits" << 1)));
答案 2 :(得分: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将数据更新为新的所需的最后一组参数