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

Есть ли способ преобразовать его, например, в строку?

3

Решение

Вы можете вытащить поле, которое вы хотите прямо как двойной. Чтобы напечатать высокоточный вывод, вам необходимо установить его в выходном потоке. Например.

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

дает:

lng: -58.4682568037741

Вы можете проверить это doc["lng"] BSON дважды перед вызовом get_double,

4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]