调用 mongoc_collection_find 函数时如何出错?
How to get errors when calling mongoc_collection_find function?
查看 Mongo C driver 中用于对集合进行操作的函数,我看到其中许多函数使用 bson_error_t*
return 参数来获取可能的错误(并且它们 return false
在那种情况下)。
布尔值
mongoc_collection_insert (mongoc_collection_t *collection,
mongoc_insert_flags_t flags,
const bson_t *document,
const mongoc_write_concern_t *write_concern,
bson_error_t *error);
其他人(mongoc_collection_update or mongoc_collection_remove)的工作方式相同。
但是,执行查询的函数 (mongoc_collection_find) 具有以下签名:
mongoc_cursor_t *
mongoc_collection_find (mongoc_collection_t *collection,
mongoc_query_flags_t flags,
uint32_t skip,
uint32_t limit,
uint32_t batch_size,
const bson_t *query,
const bson_t *fields,
const mongoc_read_prefs_t *read_prefs)
在这种情况下没有 bson_error_t*
参数,那么潜在的错误是如何 returned 的?
我想也许检查 return 值 NULL-ness 可能意味着错误(尽管根据文档 return 值是 “新分配的 mongoc_cursor_t不再使用时应该用 mongoc_cursor_destroy() 释放 并且他们没有提到在失败的情况下为 NULL 的可能性)但即使在那种情况下,如何知道确切的发生错误?
操作 mongoc_collection_aggregate 与 mongoc_collection_find
非常相似,那里的文档说:
This function returns a newly allocated mongoc_cursor_t
that should be freed with mongoc_cursor_destroy()
when no longer in use. The returned mongoc_cursor_t
is never NULL
; if the parameters are invalid, the bson_error_t
in the mongoc_cursor_t
is filled out, and the mongoc_cursor_t
is returned before the server is selected. The user must call mongoc_cursor_next()
on the returned mongoc_cursor_t
to execute the aggregation pipeline.
所以问题可能在于 mongoc_collection_find
不完整,但它的工作方式相同。
我提出了一个modification to Mongo C driver documentation来证实我的假设。
查看 Mongo C driver 中用于对集合进行操作的函数,我看到其中许多函数使用 bson_error_t*
return 参数来获取可能的错误(并且它们 return false
在那种情况下)。
布尔值
mongoc_collection_insert (mongoc_collection_t *collection,
mongoc_insert_flags_t flags,
const bson_t *document,
const mongoc_write_concern_t *write_concern,
bson_error_t *error);
其他人(mongoc_collection_update or mongoc_collection_remove)的工作方式相同。
但是,执行查询的函数 (mongoc_collection_find) 具有以下签名:
mongoc_cursor_t *
mongoc_collection_find (mongoc_collection_t *collection,
mongoc_query_flags_t flags,
uint32_t skip,
uint32_t limit,
uint32_t batch_size,
const bson_t *query,
const bson_t *fields,
const mongoc_read_prefs_t *read_prefs)
在这种情况下没有 bson_error_t*
参数,那么潜在的错误是如何 returned 的?
我想也许检查 return 值 NULL-ness 可能意味着错误(尽管根据文档 return 值是 “新分配的 mongoc_cursor_t不再使用时应该用 mongoc_cursor_destroy() 释放 并且他们没有提到在失败的情况下为 NULL 的可能性)但即使在那种情况下,如何知道确切的发生错误?
操作 mongoc_collection_aggregate 与 mongoc_collection_find
非常相似,那里的文档说:
This function returns a newly allocated
mongoc_cursor_t
that should be freed withmongoc_cursor_destroy()
when no longer in use. The returnedmongoc_cursor_t
is neverNULL
; if the parameters are invalid, thebson_error_t
in themongoc_cursor_t
is filled out, and themongoc_cursor_t
is returned before the server is selected. The user must callmongoc_cursor_next()
on the returnedmongoc_cursor_t
to execute the aggregation pipeline.
所以问题可能在于 mongoc_collection_find
不完整,但它的工作方式相同。
我提出了一个modification to Mongo C driver documentation来证实我的假设。