MongoDB C++ Driver 3.0 获取字符串中的文档并避免 json

MongoDB C++ Driver 3.0 get document in string and avoid json

我正在尝试从数据库中获取 double 类型的数据,正如 documentation 所说:

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

但我想避免将 doc 转换为 json,因为我丢失了小数精度。例如:

在数据库中显示为:

"lng" : -58.4682568037741

但是在转换为 json 之后,我收到了这个:

"lng" : -58.4682

例如,有没有办法将其直接转换为字符串?

你可以直接拉出你想要的字段作为double。要打印高精度输出,您需要在输出流上进行设置。例如

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

给出:

lng: -58.4682568037741

您可能想在调用 get_double 之前验证 doc["lng"] 是 BSON double。