类似于我们如何从具有单个二进制文档的缓冲区构造bsoncxx :: document :: view对象的方法,有没有一种方法可以在此框架中从.bson转储中的集合中提取单个文档,而不必将它们加载到数据库?
即什么适用于单个文档对象
uint8 *buffer; // single bson document
size_t length; // size of buffer
bsoncxx::document::view view(buffer, length);
for (auto elem : view) {
doSomethingWithElem()
}
我希望能够为整个转储构造一个游标,但无需将其加载到集合中。这样可能吗?
答案 0 :(得分:1)
找到了解决方案,最后非常简单-我使用了libbson库。 我在下面使用的示例:
#include <bson.h>
// and other includes
void read_bson() {
bson_reader_t *reader;
const bson_t *doc;
bson_error_t error;
bool eof;
char *path;
reader = bson_reader_new_from_file(path, &error);
if (reader)
{
while ((doc = bson_reader_read(reader, &eof)))
{
const uint8_t *buffer = bson_get_data(doc);
auto view = bsoncxx::document::view(buffer, doc->len);
}
}
}