MONGOC_COLLECTION_UPDATE_ONE(3)
π MONGOC_COLLECTION_UPDATE_ONE(3) π
okay so bestie, this is the libmongoc glow-up page for mongoc_collection_update_one β the function that goes in and edits one little document for you. no cap, it's giving "surgical queen" energy π and we're gonna walk through every single flag together, so grab a strawberry drink and let's go β¨
πΈ 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β amongoc_collection_t. that's your collection, your main character π«Άselectorβ abson_tholding the query that matches which document gets updated πupdateβ abson_twith the update to perform. and listen: if you're updating with a pipeline, this is abson_tarray, iykyk πreplyβ a maybe-NULLpointer to overwritable storage for abson_tthat'll hold the results π¬errorβ an optional location for abson_error_t, orNULL. optional! no pressure π
and then opts β it may be NULL, or a BSON document with extra command options. here's the whole menu, bestie:
writeConcernβ construct amongoc_write_concern_tand usemongoc_write_concern_append()to add the write concern toopts. see the example code formongoc_client_write_command_with_opts()β¨sessionIdβ first, construct amongoc_client_session_twithmongoc_client_start_session(). you can begin a transaction withmongoc_client_session_start_transaction(), optionally with amongoc_transaction_opt_tthat overrides the options inherited fromcollection, and usemongoc_client_session_append()to add the session toopts. see the example code formongoc_client_session_tπ§validateβ construct a bitwise-or of all desiredbson_validate_flags_t. set it tofalseto skip client-side validation of the provided BSON documents π«commentβ abson_value_tspecifying the comment to attach to this command. the comment will appear in log messages, profiler output, andcurrentOpoutput. requires MongoDB 4.4 or later πbypassDocumentValidationβ set totrueto 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β whentrue, 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 π―sortβ specify a sort order when matching documents π
π DESCRIPTION π
this function updates at most one document in collection that matches selector. one. single. document. it's picky and we respect it π
wanna update multiple documents instead? that's mongoc_collection_update_many(), different vibes, different function π¦
if you pass a non-NULL reply, it gets filled out with the fields matchedCount, modifiedCount, and optionally upsertedId if applicable. but if there's a server error then reply contains either a "writeErrors" array with one subdocument or a "writeConcernErrors" array π and β important β the reply must be freed with bson_destroy(). don't leave it hanging, bestie π«Ά
π ERRORS π
errors are propagated via the error parameter. that's the whole tea β
π RETURNS π
returns true if successful. returns false and sets error if there are invalid arguments or a server or network error π
and a write concern timeout or write concern error is considered a failure. fr fr, that counts as a fail π
π 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:\n"
"error message: %s\n",
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.
and that's the whole page, bestie! this masterpiece is from version2.5.6, datedOct 09, 2026β go forth and update exactly one document, you icon ππ
π¦ where this page comes from
- epel 10: mongo-c-driver-devel 2.5.6-1.el10_3 Β· Apache-2.0 AND ISC AND MIT AND Zlib
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms