qq_33672112
半英里外的雨
2018-09-06 02:31
采纳率: 69.2%
浏览 1.2k

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

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

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • qq_33672112
    半英里外的雨 2018-09-13 02:54
    已采纳

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

    点赞 评论
  • oyljerry
    oyljerry 2018-09-06 02:41

    转成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);
       }
    
    点赞 评论
  • dabocaiqq
    dabocaiqq 2018-09-06 02:42
     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);
    
    点赞 评论

相关推荐