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

NAME

       mongoc_find_and_modify_opts_append - mongoc_find_and_modify_opts_append()

SYNOPSIS

          bool
          mongoc_find_and_modify_opts_append (mongoc_find_and_modify_opts_t *opts,
                                              const bson_t *extra);

PARAMETERS

opts: A mongoc_find_and_modify_opts_t.

       • extra:  A  bson_t with fields and values to append directly to the findAndModify command
         sent to the server.

DESCRIPTION

       Adds arbitrary options to a findAndModify command.

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

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

       • writeConcern: Construct a mongoc_write_concern_t and  use  mongoc_write_concern_append()
         to    add    the    write    concern    to    opts.    See    the   example   code   for
         mongoc_client_write_command_with_opts().

       • 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.

       • hint:  A  document  or  string  that  specifies  the  index  to use to support the query
         predicate.

       • let: A BSON document consisting of any number  of  parameter  names,  each  followed  by
         definitions of constants in the MQL Aggregate Expression language.

       • comment:  A  bson_value_t  specifying the comment to attach to this command. The comment
         will appear in log messages, profiler output, and currentOp output. Requires MongoDB 4.4
         or later.

RETURNS

       Returns true on success. If any arguments are invalid, returns false and logs an error.

APPENDING OPTIONS TO FINDANDMODIFY

       opts.c

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

             /* Find Zlatan Ibrahimovic, the striker */
             BSON_APPEND_UTF8 (&query, "firstname", "Zlatan");
             BSON_APPEND_UTF8 (&query, "lastname", "Ibrahimovic");
             BSON_APPEND_UTF8 (&query, "profession", "Football player");

             /* Bump his age */
             update = BCON_NEW ("$inc", "{", "age", BCON_INT32 (1), "}");

             opts = mongoc_find_and_modify_opts_new ();
             mongoc_find_and_modify_opts_set_update (opts, update);

             /* Abort if the operation takes too long. */
             mongoc_find_and_modify_opts_set_max_time_ms (opts, 100);

             /* Set write concern w: 2 */
             wc = mongoc_write_concern_new ();
             mongoc_write_concern_set_w (wc, 2);
             mongoc_write_concern_append (wc, &extra);

             /* Some future findAndModify option the driver doesn't support conveniently
              */
             BSON_APPEND_INT32 (&extra, "futureOption", 42);
             mongoc_find_and_modify_opts_append (opts, &extra);

             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 (&extra);
             bson_destroy (update);
             bson_destroy (&query);
             mongoc_write_concern_destroy (wc);
             mongoc_find_and_modify_opts_destroy (opts);
          }

AUTHOR

       MongoDB, Inc

COPYRIGHT

       2017-present, MongoDB, Inc