linux下如何提取bson中的MongoDB唯一标识_id

已经通过mongoc_collection_find()和mongoc_cursor_next()拿到想要的bson_t 类型对象现在想提取该对象中包含的MongoDB唯一标识_id。
图片说明

3个回答

自己找了一个笨方法实现了。

转成json,然后用_id做key来访问对应的数据

 while (mongoc_cursor_more (cursor) && mongoc_cursor_next (cursor, &doc)) {
      str = bson_as_json (doc, NULL);
      printf ("%s\n", str);
      bson_free (str);
   }
qq_33672112
半英里外的雨 您的意思是不是对C指针str做键值对"key=value"字符串,然后解析出_id的值
一年多之前 回复
qq_33672112
半英里外的雨 具体如何转为json对象,您写的str应该是一个字符指针。因为初学,请多包涵。
一年多之前 回复
oyljerry
oyljerry 回复qq_33672112: 转成json对象,然后_id是key
一年多之前 回复
qq_33672112
半英里外的雨 我写的代码和您给的差不多,我想要的是如何从str里提取_id信息,或者从doc提取_id信息,您说的用_id做key具体怎么做,请指教。
一年多之前 回复
 bson_t query;
bson_t child;
bson_init(&query);

BSON_APPEND_INT64(&query, "id", 0);

mongoc_cursor_t m_pCursor = mongoc_collection_find(m_pCollection,
    MONGOC_QUERY_NONE,
    0,
    0,
    0,
    &query,
    NULL,  /* Fields, NULL for all. */
    NULL); /* Read Prefs, NULL for default */

bson_destroy(&query);
bson_error_t error;
if (mongoc_cursor_error(m_pCursor, &error)) {
    cout << "Query Failure: " << error.message;
    return;
}

const bson_t *doc;

while (!mongoc_cursor_error(m_pCursor, &error)
    && mongoc_cursor_more(m_pCursor))
{
    if (mongoc_cursor_next(m_pCursor, &doc))
    {
        GetRecord(doc);
    }
    else
    {
        break;
    }
}
if (mongoc_cursor_error(m_pCursor, &error)) {
    cout << "Query Failure: " << error.message;
}

mongoc_cursor_destroy(m_pCursor);
qq_33672112
半英里外的雨 回复dabocaiqq: GetRecord函数是要引用哪个头文件还是自己定义的,另外记录中包含的_id怎么提取。请指教
一年多之前 回复
dabocaiqq
穷在人世中少你左右我想我连什么价值也没有 回复qq_33672112: 获取文档的记录
一年多之前 回复
qq_33672112
半英里外的雨 GetRecord(doc);起到什么作用
一年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐