我正在使用 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*
子文档。我错过了什么?