已经通过mongoc_collection_find()和mongoc_cursor_next()拿到想要的bson_t 类型对象现在想提取该对象中包含的MongoDB唯一标识_id。
自己找了一个笨方法实现了。
转成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);
}
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);