使用JsonCPP从MongoDB获取ID

Getting ID from MongoDB using JsonCPP

本文关键字:获取 ID MongoDB JsonCPP 使用      更新时间:2023-10-16

我正试图从我的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键值映射的东西吗?我知道,有MongoDB驱动程序的CPP,但我不能使用它(有几个原因…)。感谢任何帮助。

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

你可以在扩展JSON文档中阅读更多信息(参见"Shell模式")。

如果你不能使用驱动程序,你可能想要探索一个第三方REST接口来代替。