# mongoc_collection_find_indexes_with_opts()

## Synopsis

    mongoc_cursor_t *
    mongoc_collection_find_indexes_with_opts (mongoc_collection_t *collection,
                                              const bson_t *opts)
       BSON_GNUC_WARN_UNUSED_RESULT;

Fetches a cursor containing documents, each corresponding to an index on this collection.

This function is considered a retryable read operation. Upon a transient error (a network error, errors due to replica set failover, etc.) the operation is safely retried once. If `retryreads` is false in the URI (see mongoc_uri_t) the retry behavior does not apply.

## Parameters

- `collection`: A mongoc_collection_t.

- `opts`: A `bson_t` containing additional options.

`opts` may be NULL or a BSON document with additional command options:

- `sessionId`: First, construct a mongoc_client_session_t with mongoc_client_start_session(). You can begin a transaction with mongoc_client_session_start_transaction(), optionally with a mongoc_transaction_opt_t that overrides the options inherited from `collection`, and use mongoc_client_session_append() to add the session to `opts`. See the example code for mongoc_client_session_t.

- `serverId`: To target a specific server, include an int32 “serverId” field. Obtain the id by calling mongoc_client_select_server(), then mongoc_server_description_id() on its return value.

## Errors

Use mongoc_cursor_error() on the returned cursor to check for errors.

## Returns

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`, even on error. The user must call mongoc_cursor_next() on the returned mongoc_cursor_t to execute the initial command.

Cursor errors can be checked with mongoc_cursor_error_document(). It always fills out the `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.

In the returned cursor each result corresponds to the server’s representation of an index on this collection. If the collection does not exist on the server, the cursor will be empty.

The cursor functions mongoc_cursor_set_limit(), mongoc_cursor_set_batch_size(), and mongoc_cursor_set_max_await_time_ms() have no use on the returned cursor.