2016-06-27 8 views
3

を避けるdocumentationが言うように、私は、データベースからdouble型のデータを取得しようとしています:MongoDBはC++ドライバー3.0のget文書とJSON

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

をしかし、私は、小数点を失ったので、私は、JSONにドキュメントを変換しないようにしたいです精度。例:データベースで

はこれを示しています

"lng" : -58.4682568037741 

しかし、JSONに変換した後、私はこの受信:

"lng" : -58.4682 

は、たとえば、文字列に直接変換する方法はありますか?

答えて

4

直接フィールドをダブルとして引き出すことができます。高精度出力を出力するには、出力ストリームで設定する必要があります。例えば。

for (auto&& doc : cursor) { 
    std::cout << std::setprecision(15) 
       << "lng: " << doc["lng"].get_double() << std::endl; 
} 

は与える:

lng: -58.4682568037741 

あなたはdoc["lng"]get_doubleを呼び出す前にBSONの二重であることを確認することをお勧めします。

+0

Worked。本当にありがとう! – dhiga

+0

mongocxxドライバのどこかに精度を設定できますか? – gncs

+0

ストリーム出力の精度を設定しますか?いいえ、運転手はそれを制御しません。 – xdg

関連する問題