mongodb C驱动程序中的sub iterator对象

时间:2013-06-27 13:19:30

标签: mongodb bson mongodb-c

这是我的收藏的结构部分:

{
    _id: {
        id:"6a6ca923517f304900badd98",
        target:"00badd6a6ca923517f304998e4df"
    },
...
}

使用:

if(bson_find(iterator, mongo_cursor_bson(cursor), "_id")){
   bson_iterator_subiterator(iterator, sub);
   id = (char*)bson_iterator_string(sub);
}

是“正在工作”但实际上只是返回我找到的数组的第一个字段的结果... 如何准确恢复“id”或“target”字段的值?

1 个答案:

答案 0 :(得分:1)

您还可以在子迭代器上使用bson_iterator_morebson_iterator_next(它仍然是迭代器)。

试试这个:

if(bson_find(iterator, mongo_cursor_bson(cursor), "_id"))
{
  bson_iterator_subiterator(iterator, sub);
  while(bson_iterator_more(sub))
  {
    if (bson_iterator_next(sub) != BSON_EOO)
    {
      printf("%s: %s\n", bson_iterator_key(sub), bson_iterator_string(sub));
    }
  }
}