使用JsonCPP从{MongyDB}获取ID

时间:2016-08-16 22:09:41

标签: c++ json mongodb jsoncpp

我正在尝试从MongoDB实例中检索一个对象。我正在使用JsonCPP库。

目前,我正在做的是:

system(("mongo --host " + host_name + " --port " +  std::to_string(port) + " " + database_name + " --eval 'db." + collection_name + ".find({},{_id:0})'  | tee -a return_from_db.json").c_str());

稍后使用以下语法解析:

Json::Value json_object;
Json::Reader jsonreader.parse(ifstream_from_return_from_db_json, json_object, false);

一旦我没有在查询中抑制_id字段,我就会在任何地方获得空值。原因如下:

{
    "_id": ObjectId("any_id")
}
  • 对象ID不是双引号。

现在我的问题:如何使用jsoncpp库提取文档的ID?我可以在MongoDB实例的设置中更改某些内容以获得语法正确的id键值映射吗? 我知道,有CPP的MongoDB驱动程序,但我不能使用它(出于几个原因......)。任何帮助赞赏。

1 个答案:

答案 0 :(得分:0)

MongoDB shell只看起来像JSON。它提供了一个自定义的扩展表单来保存纯JSON中不可用的类型信息,因此您的方法不适用于包含此类型的任何文档投影。

您可以在Extended JSON docs中详细了解它(请参阅“Shell模式”)。

如果您无法使用驱动程序,则可能需要探索third party REST interface