Provided by: libmongoc-doc_1.3.1-1_all bug

NAME

       mongoc_collection_find_and_modify() - Update and return an object.

SYNOPSIS

       bool
       mongoc_collection_find_and_modify (mongoc_collection_t *collection,
                                          const bson_t        *query,
                                          const bson_t        *sort,
                                          const bson_t        *update,
                                          const bson_t        *fields,
                                          bool                 _remove,
                                          bool                 upsert,
                                          bool                 _new,
                                          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).

       sort   A bson_t containing the sort order for query \&.

       update A bson_t containing an update spec.

       fields An optional bson_t containing the fields to return or NULL \&.

       _remove
              If the matching documents should be removed.

       upsert If an upsert should be performed.

       _new   If the new version of the document should be returned.

       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.

       This is a thin  wrapper  around  the  findAndModify  command.  Either  update  or  _remove
       arguments are required.

       NOTE
              As  of  MongoDB  3.2  and mongoc 1.3.0, the mongoc_write_concern_t specified on the
              mongoc_collection_t will be used, if any.

ERRORS

       Errors are propagated via the error parameter.

RETURNS

       Returns either the document before or after modification based on the _new parameter.

EXAMPLE

       #include <bcon.h>
       #include <mongoc.h>
       #include <stdio.h>

       int
       main (int   argc,
             char *argv[])
       {
          mongoc_collection_t *collection;
          mongoc_client_t *client;
          bson_error_t error;
          bson_t *query;
          bson_t *update;
          bson_t reply;
          char *str;

          mongoc_init ();

          client = mongoc_client_new ("mongodb://127.0.0.1:27017/");
          collection = mongoc_client_get_collection (client, "test", "test");

          /*
           * Build our query, {"cmpxchg": 1}
           */
          query = BCON_NEW ("cmpxchg", BCON_INT32 (1));

          /*
           * Build our update. {"$set": {"cmpxchg": 2}}
           */
          update = BCON_NEW ("$set", "{", "cmpxchg", BCON_INT32 (2), "}");

          /*
           * Submit the findAndModify.
           */
          if (!mongoc_collection_find_and_modify (collection, query, NULL, update, NULL, false, false, true, &reply, &error)) {
             fprintf (stderr, "find_and_modify() failure: %s\n", error.message);
             return 1;
          }

          /*
           * Print the result as JSON.
           */
          str = bson_as_json (&reply, NULL);
          printf ("%s\n", str);
          bson_free (str);

          /*
           * Cleanup.
           */
          bson_destroy (query);
          bson_destroy (update);
          bson_destroy (&reply);
          mongoc_collection_destroy (collection);
          mongoc_client_destroy (client);

          mongoc_cleanup ();

          return 0;
       }

COLOPHON

       This   page   is   part   of   MongoDB   C   Driver.    Please   report   any   bugs    at
       https://jira.mongodb.org/browse/CDRIVER.