mongoc_find_and_modify_opts_append(3)
mongoc_find_and_modify_opts_append()
Description
MONGOC_FIND_AND_MODIFY_OPTS_APPEND
NAME
mongoc_find_and_modify_opts_append - mongoc_find_and_modify_opts_append()
SYNOPSIS
bool
mongoc_find_and_modify_opts_append
(mongoc_find_and_modify_opts_t *opts,
const bson_t *extra);
PARAMETERS
|
• |
opts: A mongoc_find_and_modify_opts_t. | ||
|
• |
extra: A bson_t with fields and values to append directly to the findAndModify command sent to the server. |
DESCRIPTION
Adds arbitrary options to a findAndModify command.
extra does not have to remain valid after calling this function.
extra 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. | ||
|
• |
hint: A document or string that specifies the index to use to support the query predicate. | ||
|
• |
let: A BSON document consisting of any number of parameter names, each followed by definitions of constants in the MQL Aggregate Expression language. | ||
|
• |
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. |
RETURNS
Returns true on success. If any arguments are invalid, returns false and logs an error.
APPENDING OPTIONS TO FINDANDMODIFY
opts.c
void
fam_opts (mongoc_collection_t *collection)
{
mongoc_find_and_modify_opts_t *opts;
bson_t reply;
bson_t *update;
bson_error_t error;
bson_t query = BSON_INITIALIZER;
mongoc_write_concern_t *wc;
bson_t extra = BSON_INITIALIZER;
bool success;
/* Find Zlatan
Ibrahimovic, the striker */
BSON_APPEND_UTF8 (&query, "firstname",
"Zlatan");
BSON_APPEND_UTF8 (&query, "lastname",
"Ibrahimovic");
BSON_APPEND_UTF8 (&query, "profession",
"Football player");
/* Bump his age
*/
update = BCON_NEW ("$inc", "{",
"age", BCON_INT32 (1), "}");
opts =
mongoc_find_and_modify_opts_new ();
mongoc_find_and_modify_opts_set_update (opts, update);
/* Abort if the
operation takes too long. */
mongoc_find_and_modify_opts_set_max_time_ms (opts, 100);
/* Set write
concern w: 2 */
wc = mongoc_write_concern_new ();
mongoc_write_concern_set_w (wc, 2);
mongoc_write_concern_append (wc, &extra);
/* Some future
findAndModify option the driver doesn't support conveniently
*/
BSON_APPEND_INT32 (&extra, "futureOption",
42);
mongoc_find_and_modify_opts_append (opts, &extra);
success =
mongoc_collection_find_and_modify_with_opts (
collection, &query, opts, &reply, &error);
if (success) {
char *str;
str =
bson_as_canonical_extended_json (&reply, NULL);
printf ("%s\n", str);
bson_free (str);
} else {
fprintf (
stderr, "Got error: \"%s\" on line
%d\n", error.message, __LINE__);
}
bson_destroy
(&reply);
bson_destroy (&extra);
bson_destroy (update);
bson_destroy (&query);
mongoc_write_concern_destroy (wc);
mongoc_find_and_modify_opts_destroy (opts);
}
AUTHOR
MongoDB, Inc
COPYRIGHT
2017-present, MongoDB, Inc