我正在尝试从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")
}
现在我的问题:如何使用jsoncpp库提取文档的ID?我可以在MongoDB实例的设置中更改某些内容以获得语法正确的id键值映射吗? 我知道,有CPP的MongoDB驱动程序,但我不能使用它(出于几个原因......)。任何帮助赞赏。
答案 0 :(得分:0)
MongoDB shell只看起来像JSON。它提供了一个自定义的扩展表单来保存纯JSON中不可用的类型信息,因此您的方法不适用于包含此类型的任何文档投影。
您可以在Extended JSON docs中详细了解它(请参阅“Shell模式”)。
如果您无法使用驱动程序,则可能需要探索third party REST interface。