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


       mongoc_collection_update_one - mongoc_collection_update_one()


          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);


       · 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

       · 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

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

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

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

       · arrayFilters: An array of filters specifying to which array elements  an  update  should


       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().


       MongoDB update command documentation for more information on the update options.




       Errors are propagated via the error parameter.


       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.



          #include "mongoc/mongoc.h"

          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",
                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;


       MongoDB, Inc


       2017-present, MongoDB, Inc