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

bsoncxx - is there a way to iterate through documents in .bson dump file?

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

我希望能够为整个转储构建游标,但不将其加载到集合中。这样的事情可能吗?

找到了解决方案,最终非常简单 - 我使用了 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);
             }
         }
}