MongoDB c 驱动程序从 bson 中提取数组

MongoDB c Driver extracting arrays from bson

我正在尝试使用 c 驱动程序从 MongoDB 文档中提取一个数组。 文件结构如下:

name: "TestName"
data:["testData1","testData2"];

我已经检索到这样的文档:

cursor = mongoc_collection_find_with_opts(collection, query, NULL, NULL);

while (mongoc_cursor_next(cursor, &document))
{
    str = (const unsigned char *)bson_as_canonical_extended_json(document, NULL);
    b = bson_new_from_json(str, -1, &error);
}

if (bson_iter_init(&iter, b))
{
    while (bson_iter_next(&iter))
    {
       //if the type is an array
        if (bson_iter_type(&iter) == 4){
            //requesting for data
            bson_iter_find(&iter, "data");
            const uint8_t * data = NULL;
            uint32_t len = 0;
            bson_iter_array(&iter, &len, &data);
            bson_t *dataArray = bson_new_from_data(data, len);
            bson_iter_t dataIter;
            bson_iter_init(&dataIter, dataArray);
            bson_iter_find(&dataIter, "0");
        }
    }
}

调试器在 bson_iter_array() 处显示失败。 我已引用 this post,但未能解决此问题。如何使用 c 驱动程序从 MongoDB 的数组中正确检索和存储数据?

mongoc_cursor_next 给你一个 bson_t 指针,它是整个文档。

从这里使用 the documentation 迭代该文档。

This section 涵盖下降到哈希键(在您的示例中为 data),看起来相同的代码将用于数组字段以获取数组元素。

进入数组级别后,使用 http://mongoc.org/libbson/current/bson_iter_utf8.html 检索字符串元素。

您不应转换为 json 或从 json 扩展或创建任何新的 bson_t 实例。