2016-08-16 27 views
0

我想從我的MongoDB實例中檢索出一個對象。我正在使用JsonCPP庫。使用JsonCPP從MongoDB獲取ID

目前,我在做什麼是:

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鍵值映射嗎? 我知道,有CPP的MongoDB驅動程序,但我不能使用它(出於幾個原因...)。任何幫助讚賞。

+0

你想要做的是註定要無盡的挫折。只需使用驅動程序。你說你不能使用其中一個C++驅動程序?爲什麼不?即使那樣,爲什麼不使用C驅動程序呢? – acm

回答

0

MongoDB shell只看起來像JSON。它提供了一種自定義的擴展形式來保存純JSON中不可用的類型信息,因此您的方法不適用於包含此類類型的任何文檔投影。

您可以在Extended JSON docs中查看更多關於它的信息(請參閱「殼牌模式」)。

如果您不能使用驅動程序,您可能需要改爲使用third party REST interface