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,

Другие вопросы по тегам