2013-08-28 70 views
2

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

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

我无法找到文档的关于如何使用C++驱动程序基础上,_id领域,从或更新查询一丝一毫这在我的例子是我唯一独特的领域。任何示例代码都将非常感谢,尤其是那些运行查找查询,拾取对象ID,然后更新该特定文档上的字段的代码。

回答

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需要的最后一组参数来将数据更新为新的数据

+0

完成,对不起,糟糕的形式。 – mikepinch

+0

我不确定你做了什么? – WiredPrairie

3

我没有编译驱动程序,但是,我认为这是驱动到OID

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

在任何情况下,有一些测试用例位于here,我已经在过去使用的“学习”如何做一些事情在非常不良记录的驱动程序,可以/不能证明是有用的。

1

试试此代码:

db.update("tutorial.persons", 
     BSON("name" << "Joe" << "age" << 33), 
     BSON("$inc" << BSON("visits" << 1))); 
相关问题