Skip site navigation (1)Skip section navigation (2)

  
 
  

home | help
MONGOC_COLLECTION_UPDATE_ONE(3)     libmongoc	 MONGOC_COLLECTION_UPDATE_ONE(3)

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 updat-
       ing.

     * 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 con-
       tain 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 col-
       lection, 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  docu-
       ments.

     * 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  valida-
       tion 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 lan-
       guage.

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

     * sort: Specify a sort order when matching documents.

DESCRIPTION
     This  function  updates at most one document in collection that matches se-
     lector.

     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 sub-
     document 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 in-
     valid 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)
	{
	   mongoc_init ();
	   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);
	   mongoc_cleanup ();
	   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
     2009-present, MongoDB, Inc.

1.30.8				  Aug 27, 2026	 MONGOC_COLLECTION_UPDATE_ONE(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=mongoc_collection_update_one&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help