bsoncxx-有没有办法遍历.bson转储文件中的文档?

时间:2019-05-13 18:29:40

标签: c++ mongodb mongo-cxx-driver

类似于我们如何从具有单个二进制文档的缓冲区构造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()
}

我希望能够为整个转储构造一个游标,但无需将其加载到集合中。这样可能吗?

1 个答案:

答案 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);
             }
         }
}