如何在c ++ mongodb驱动程序

时间:2016-04-13 04:35:04

标签: c++ mongodb

我想知道如何在c + mongodb驱动程序中使用$ set $ inc。我只能调用update将整个json字符串更新到db中,如下所示:_db_conn.update(db_name_str, mongo::Query(key_word), mongo::fromjson(json_str), true);
有没有办法使用$ set,$ inc选项进行部分更新?

当我在互联网上查看它时,我在java中找到了类似的解决方案,但我无法在c ++版本文档中找到它... WriteResult result = mongoNsTemplate.getCollection("userStore").update(query.getQueryObject(), new BasicDBObject("$set", dbObject), true, false);

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

您可以使用$ set,$ inc或其他操作。文档(上面的json_str)必须是包含$ set或$ inc等更新运算符修饰符的文档,而不是完整文档。因此,如果json_str包含以下内容:

string json_str = "{'$set': {'field1': 1}, '$inc': {'field2': 1}}";

致电_db_conn.update(db_name_str, mongo::Query(key_word), mongo::fromjson(json_str), true);将:

  • 更新第一个匹配的文档(如果找不到则插入一个新文件(upsert为true)
  • 将field1设置为1(如果未找到则将添加)
  • 将field2增加1(如果未找到则设置为1,如果找到则导致错误但不是数值)

这相当于使用mongo shell。