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。
我正在尝试从数据库中获取 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。