如何使用 C API 从 bson_iter_t 获取 bson_t* 子文档

问题描述 投票:0回答:0

我正在使用 mongoc 和相关的 BSON 库来读取和写入磁盘文件。我无法理解 BSON C API。这是一个验收测试,我希望结果保存在二进制文件中(使用

bson_writer_*
函数生成)。该文件的二进制到 ascii 转储看起来很合理。

现在我想阅读那个文件,大概是使用

bson_reader_*
。我正在关注 [sparse] 文档,并且可以获得包含以下内容的 BSON 文档(为清楚起见删除了错误检查):

bool foundEOF;
bson_error_t error;
const char* file_name = "expected_results.dat";

bson_reader_t *reader = bson_reader_new_from_file (file_name, &error)
const bson_t *doc = bson_reader_read (reader, &foundEOF);

到目前为止一切顺利。现在我想查找特定条目并提取值:

bson_iter_t iter;
bson_iter_init_find(&iter, doc, "my_key"); 
const bson_value_t *value = bson_iter_value (&iter);

我知道

my_key
条目的值本身就是一个BSON子文档。但是如何获得指向该子文档的
bson_t*
指针以便我可以使用它?
我这里只有一个
bson_value_t*
,我不知道该怎么做。

我希望它类似于

mongo_cursor_t
,我可以在这样的集合中“迭代”以获取子文档:

const bson_t* subdoc = nullptr;
mongo_cursor_next(cursor, subdoc);

但我不知道如何使用 BSON API 从 BSON 文档中获取

bson_t*
子文档。我错过了什么?

c mongodb bson
© www.soinside.com 2019 - 2024. All rights reserved.