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

NAME

       mongoc_collection_update_one - mongoc_collection_update_one()

SYNOPSIS

          bool
          mongoc_collection_update_one (mongoc_collection_t *collection,
                                        const bson_t *selector,
                                        const bson_t *update,
                                        const bson_t *opts,
                                        bson_t *reply,
                                        bson_error_t *error);

PARAMETERS

collection: A mongoc_collection_t.

       • selector: A bson_t containing the query to match the document for updating.

       • update: A bson_t containing the update to perform. If updating with a pipeline, a bson_t
         array.

       • reply: Optional. An uninitialized bson_t populated with the update result, or NULL.

       • error: An optional location for a bson_error_t or NULL.

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

       • validate:  Construct  a bitwise-or of all desired bson_validate_flags_t. Set to false to
         skip client-side validation of the provided BSON documents.

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

       • bypassDocumentValidation: Set to true to  skip  server-side  schema  validation  of  the
         provided BSON documents.

       • collation:  Configure  textual comparisons. See Setting Collation Order, and the MongoDB
         Manual entry on Collation. Collation requires MongoDB 3.2 or later, otherwise  an  error
         is returned.

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

       • upsert: When true, creates a new document if no document matches the query.

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

       • arrayFilters:  An  array  of filters specifying to which array elements an update should
         apply.

DESCRIPTION

       This function updates at most one document in collection that matches selector.

       To update multiple documents see mongoc_collection_update_many().

       If you pass a non-NULL reply, it is filled out with fields   matchedCount,  modifiedCount,
       and  optionally  upsertedId  if applicable. If there is a server error then reply contains
       either a "writeErrors" array with one subdocument or  a  "writeConcernErrors"  array.  The
       reply must be freed with bson_destroy().

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

       example-update.c

          #include "mongoc/mongoc.h"

          int
          main (int argc, char **argv)
          {
             bson_t *to_insert = BCON_NEW ("_id", BCON_INT32 (1));
             bson_t *selector = BCON_NEW ("_id", "{", "$gt", BCON_INT32 (0), "}");
             bson_t *update = BCON_NEW ("$set", "{", "x", BCON_INT32 (1), "}");
             const bson_t *next_doc;
             char *to_str;
             bson_error_t error = {0};
             mongoc_cursor_t *cursor;
             mongoc_client_t *client;
             mongoc_collection_t *coll;
             const char *uri_string = "mongodb://localhost:27017/?appname=example-update";
             mongoc_uri_t *uri = mongoc_uri_new_with_error (uri_string, &error);

             if (!uri) {
                fprintf (stderr,
                         "failed to parse URI: %s\n"
                         "error message:       %s\n",
                         uri_string,
                         error.message);
                return EXIT_FAILURE;
             }

             client = mongoc_client_new_from_uri (uri);
             if (!client) {
                return EXIT_FAILURE;
             }

             coll = mongoc_client_get_collection (client, "db", "example_coll");

             mongoc_client_set_error_api (client, 2);
             /* insert a document */
             if (!mongoc_collection_insert_one (coll, to_insert, NULL, NULL, &error)) {
                fprintf (stderr, "insert failed: %s\n", error.message);
                return EXIT_FAILURE;
             }

             if (!mongoc_collection_update_one (
                    coll, selector, update, NULL, NULL, &error)) {
                fprintf (stderr, "update failed: %s\n", error.message);
                return EXIT_FAILURE;
             }

             to_str = bson_as_relaxed_extended_json (to_insert, NULL);
             printf ("inserted: %s\n", to_str);
             bson_free (to_str);

             cursor = mongoc_collection_find_with_opts (coll, selector, NULL, NULL);
             BSON_ASSERT (mongoc_cursor_next (cursor, &next_doc));
             printf ("after update, collection has the following document:\n");

             to_str = bson_as_relaxed_extended_json (next_doc, NULL);
             printf ("%s\n", to_str);
             bson_free (to_str);

             BSON_ASSERT (mongoc_collection_drop (coll, NULL));

             bson_destroy (to_insert);
             bson_destroy (update);
             bson_destroy (selector);
             mongoc_collection_destroy (coll);
             mongoc_uri_destroy (uri);
             mongoc_client_destroy (client);

             return EXIT_SUCCESS;
          }

       SEE ALSO:
          MongoDB update command documentation for more information on the update options.

          mongoc_collection_update_many()

          mongoc_collection_replace_one()

AUTHOR

       MongoDB, Inc

COPYRIGHT

       2017-present, MongoDB, Inc