This function returns a newly allocated :symbol:`mongoc_cursor_t` that should be freed with :symbol:`mongoc_cursor_destroy()` when no longer in use. The returned :symbol:`mongoc_cursor_t` is never ``NULL``, even on error. The user must call :symbol:`mongoc_cursor_next()` on the returned :symbol:`mongoc_cursor_t` to execute the initial command.

Cursor errors can be checked with :symbol:`mongoc_cursor_error_document`. It always fills out the :symbol:`bson_error_t` if an error occurred, and optionally includes a server reply document if the error occurred server-side.

.. warning::

  Failure to handle the result of this function is a programming error.
