在 MongoDB C++ 驱动程序中获取 OID (types::b_oid) 作为字符串

Get OID (types::b_oid) as string in MongoDB C++ driver

我正在使用 MongoDB C++ 驱动程序(3.4.0 版供参考)。我需要获取给定文档的 _id。首先,我抓取文档:

bsoncxx::stdx::optional<bsoncxx::document::value> sub = conn["mydb"]["csubs"].find_one(...);

所以我可以通过这种方式访问​​ _id

sub->view()["_id"].get_oid();

到目前为止,还不错。

据我所知 in driver API 这个对象的类型是 types::b_oid。但是,我需要将其作为 std::string.

令人惊讶的是,我在the types::b_oid class documentation中没有找到任何字符串转换的方法。我的意思是,典型的 to_string() 方法,所以我可以调用类似的东西:

sub->view()["_id"].get_oid().to_string();

可能我遗漏了一些东西(因为用例似乎太明显了:),但是在检查文档一段时间后我没有找到解决方案。欢迎任何帮助!

我想你可以从 value 字段调用 to_string():

sub->view()["_id"].get_oid().value.to_string();

这是来自 mongocxx github repo

的示例