2016-08-11 65 views
0

MongoDB中的数据库iPodia和收集OVS_DETAILS,我有一个纪录如何解决find方法返回的mongoDB C++结果?

{ 

"_id" : 
    ObjectId("57ab14508b16c9557dcfa316"), 

    "dpid" : "202481588545212", "mac" : "b8:27:eb:28:a6:bc", 

    "extranet_gateway_mac" : "f0:b4:29:52:8f:b6", 

    "extranet_gateway_ip" : "192.168.31.1", 

    "extranet_public_ip" : "59.66.214.24", 

    "extranet_private_ip" : "192.168.31.118", 

    "extranet_netmask" : "255.255.255.0", 

    "intranet_cidr_prefix" : 22020096, 

    "intranet_cidr_length" : 29, "persist" : 0, 

    "timestamp" : 1470187766 

} 
auto cursor = db["OVS_DETAILS"].find({filter_builder.view}); 
for (auto&& doc : cursor) { 
    std::cout << bsoncxx::to_json(doc) << std::endl; 
} 

我怎样才能解决这个结果呢?例如,通过键“持久”获取值。

回答

0

从光标处获得bsoncxx::document::view后,可以使用[]运算符访问元素视图(但请记住,每次都是线性搜索)。给定一个元素视图,你可以检查的类型和提取感兴趣的值:

bsoncxx::document::element element = doc["mac"]; 
if(element.type() != bsoncxx::type::k_utf8) { 
    // Error 
} 
std::string mac = element.get_utf8().value.to_string(); 

对于“坚持”,你可能要检查的类型整数类型,然后用的get_XXX方法之一提取它整数。有关更多详细信息,请参阅element documentation

相关问题