# mongoc_collection_find_and_modify_with_opts()

## Synopsis

    bool
    mongoc_collection_find_and_modify_with_opts (
       mongoc_collection_t *collection,
       const bson_t *query,
       const mongoc_find_and_modify_opts_t *opts,
       bson_t *reply,
       bson_error_t *error);

## Parameters

- `collection`: A mongoc_collection_t.

- `query`: A `bson_t` containing the query to locate target document(s).

- `opts`: A find and modify options. Must not be NULL.

- `reply`: An optional location for a `bson_t` that will be initialized with the result or `NULL`.

- `error`: An optional location for a bson_error_t or `NULL`.

## Description

Update and return an object.

`reply` is always initialized, and must be freed with `bson_destroy()`.

If an unacknowledged write concern is set (through mongoc_find_and_modify_opts_append()), the output `reply` is always an empty document.

## Errors

Errors are propagated via the `error` parameter.

## Returns

Returns `true` if successful. Returns `false` and sets `error` if there are invalid arguments or a server or network error.

A write concern timeout or write concern error is considered a failure.

## Example

See the example code for mongoc_find_and_modify_opts_t.