2016-08-11 70 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

相關問題