当给定键序列时,我有following function从BSON
文档中获取值:
bsoncxx::document::element deepFieldAccess(bsoncxx::document::view bsonObj, const std::vector<std::string>& path) {
if (path.empty())
return {};
auto keysIter = path.begin();
const auto keysEnd = path.end();
auto currElement = bsonObj[*(keysIter++)];
while (currElement && (keysIter != keysEnd))
currElement = currElement[*(keysIter++)];
return currElement;
}
返回的bsoncxx::document::element
可以保存任何类型的值(int32
,document
,array
,utf8
等)。如何通过std::cout
将此元素写入控制台?
bsoncxx::document::view
类型具有到JSON的已定义转换,通过std::string
标头中的函数bsoncxx::to_json
表示为bsoncxx/json.hpp
。单独的b_xyz
类型不提供这种转换,因为未包含在文档或数组结构中的元素不一定是JSON。您可以自由地形成自己的to_string
函数,并为每个声明的BSON类型定义它。