Provided by: libmongoc-doc_1.26.0-1.1ubuntu2_all bug

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: A maybe-NULL pointer to overwritable storage for a bson_t to contain the results.

       • 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 (void)
          {
             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

1.26.0                                            Mar 31, 2024                   MONGOC_COLLECTION_UPDATE_ONE(3)