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

NAME

       mongoc_find_and_modify_opts_set_update - mongoc_find_and_modify_opts_set_update()

SYNOPSIS

          bool
          mongoc_find_and_modify_opts_set_update (mongoc_find_and_modify_opts_t *opts,
                                                  const bson_t *update);

PARAMETERS

       · opts: A mongoc_find_and_modify_opts_t.

       · update:  The  update  document  is  the  same  format  as  the update document passed to
         mongoc_collection_update.

DESCRIPTION

       Adds update argument to the builder.

       update does not have to remain valid after calling this function.

RETURNS

       Returns true if it successfully added the option to the builder, otherwise false.

SETTING UPDATE

       update.c

          void
          fam_update (mongoc_collection_t *collection)
          {
             mongoc_find_and_modify_opts_t *opts;
             bson_t *update;
             bson_t reply;
             bson_error_t error;
             bson_t query = BSON_INITIALIZER;
             bool success;

             /* Find Zlatan Ibrahimovic */
             BSON_APPEND_UTF8 (&query, "firstname", "Zlatan");
             BSON_APPEND_UTF8 (&query, "lastname", "Ibrahimovic");

             /* Make him a book author */
             update = BCON_NEW ("$set", "{", "author", BCON_BOOL (true), "}");

             opts = mongoc_find_and_modify_opts_new ();
             /* Note that the document returned is the _previous_ version of the document
              * To fetch the modified new version, use
              * mongoc_find_and_modify_opts_set_flags (opts,
              * MONGOC_FIND_AND_MODIFY_RETURN_NEW);
              */
             mongoc_find_and_modify_opts_set_update (opts, update);

             success = mongoc_collection_find_and_modify_with_opts (
                collection, &query, opts, &reply, &error);

             if (success) {
                char *str;

                str = bson_as_canonical_extended_json (&reply, NULL);
                printf ("%s\n", str);
                bson_free (str);
             } else {
                fprintf (
                   stderr, "Got error: \"%s\" on line %d\n", error.message, __LINE__);
             }

             bson_destroy (&reply);
             bson_destroy (update);
             bson_destroy (&query);
             mongoc_find_and_modify_opts_destroy (opts);
          }

       Outputs:

          {
             "lastErrorObject" : {"updatedExisting" : true, "n" : 1},
                                 "value" : {
                                    "_id" : {"$oid" : "56562a99d13e6d86239c7b00"},
                                    "age" : 35,
                                    "firstname" : "Zlatan",
                                    "goals" : 342,
                                    "lastname" : "Ibrahimovic",
                                    "profession" : "Football player",
                                    "position" : "striker"
                                 },
                                           "ok" : 1
          }

AUTHOR

       MongoDB, Inc

COPYRIGHT

       2017-present, MongoDB, Inc