MongoDB C++ Driver 3.0 получить документ в строку и избежать 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
Есть ли способ преобразовать его, например, в строку?
1 ответ
Решение
Вы можете вытащить поле, которое вы хотите прямо как двойной. Чтобы напечатать высокоточный вывод, вам необходимо установить его в выходном потоке. Например
for (auto&& doc : cursor) {
std::cout << std::setprecision(15)
<< "lng: " << doc["lng"].get_double() << std::endl;
}
дает:
lng: -58.4682568037741
Вы можете проверить это doc["lng"]
BSON дважды перед вызовом get_double
,