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
实例。
我正在尝试使用 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
实例。