1MONGOC_COLLECTION_UPDATE_ONE(3)    libmongoc   MONGOC_COLLECTION_UPDATE_ONE(3)
2
3
4

NAME

6       mongoc_collection_update_one - mongoc_collection_update_one()
7

SYNOPSIS

9          bool
10          mongoc_collection_update_one (mongoc_collection_t *collection,
11                                        const bson_t *selector,
12                                        const bson_t *update,
13                                        const bson_t *opts,
14                                        bson_t *reply,
15                                        bson_error_t *error);
16

PARAMETERS

18collection: A mongoc_collection_t.
19
20selector: A bson_t containing the query to match the document for up‐
21         dating.
22
23update: A bson_t containing the update to perform. If updating with a
24         pipeline, a bson_t array.
25
26reply:  Optional.  An  uninitialized bson_t populated with the update
27         result, or NULL.
28
29error: An optional location for a bson_error_t or NULL.
30
31       opts may be NULL or a BSON document with additional command options:
32
33writeConcern:   Construct   a    mongoc_write_concern_t    and    use
34         mongoc_write_concern_append()  to  add the write concern to opts. See
35         the example code for mongoc_client_write_command_with_opts().
36
37sessionId:   First,   construct   a   mongoc_client_session_t    with
38         mongoc_client_start_session().  You  can  begin  a  transaction  with
39         mongoc_client_session_start_transaction(),    optionally    with    a
40         mongoc_transaction_opt_t  that  overrides  the options inherited from
41         collection, and use mongoc_client_session_append() to add the session
42         to opts. See the example code for mongoc_client_session_t.
43
44validate:     Construct     a     bitwise-or     of    all    desired
45         bson_validate_flags_t. Set to false to skip client-side validation of
46         the provided BSON documents.
47
48comment: A bson_value_t specifying the comment to attach to this com‐
49         mand. The comment will appear in log messages, profiler  output,  and
50         currentOp output. Requires MongoDB 4.4 or later.
51
52bypassDocumentValidation: Set to true to skip server-side schema val‐
53         idation of the provided BSON documents.
54
55collation: Configure textual comparisons. See Setting  Collation  Or‐
56         der,  and  the  MongoDB Manual entry on Collation. Collation requires
57         MongoDB 3.2 or later, otherwise an error is returned.
58
59hint: A document or string that specifies the index to use to support
60         the query predicate.
61
62upsert:  When true, creates a new document if no document matches the
63         query.
64
65let: A BSON document consisting of any  number  of  parameter  names,
66         each  followed  by  definitions of constants in the MQL Aggregate Ex‐
67         pression language.
68
69arrayFilters: An array of filters specifying to which array  elements
70         an update should apply.
71

DESCRIPTION

73       This  function  updates at most one document in collection that matches
74       selector.
75
76       To update multiple documents see mongoc_collection_update_many().
77
78       If you pass a non-NULL reply, it is filled out  with  fields   matched‐
79       Count, modifiedCount, and optionally upsertedId if applicable. If there
80       is a server error then reply contains either a "writeErrors" array with
81       one  subdocument  or  a  "writeConcernErrors"  array. The reply must be
82       freed with bson_destroy().
83

ERRORS

85       Errors are propagated via the error parameter.
86

RETURNS

88       Returns true if successful. Returns false and sets error if  there  are
89       invalid arguments or a server or network error.
90
91       A write concern timeout or write concern error is considered a failure.
92

EXAMPLE

94       example-update.c
95
96          #include "mongoc/mongoc.h"
97
98          int
99          main (void)
100          {
101             bson_t *to_insert = BCON_NEW ("_id", BCON_INT32 (1));
102             bson_t *selector = BCON_NEW ("_id", "{", "$gt", BCON_INT32 (0), "}");
103             bson_t *update = BCON_NEW ("$set", "{", "x", BCON_INT32 (1), "}");
104             const bson_t *next_doc;
105             char *to_str;
106             bson_error_t error = {0};
107             mongoc_cursor_t *cursor;
108             mongoc_client_t *client;
109             mongoc_collection_t *coll;
110             const char *uri_string = "mongodb://localhost:27017/?appname=example-update";
111             mongoc_uri_t *uri = mongoc_uri_new_with_error (uri_string, &error);
112
113             if (!uri) {
114                fprintf (stderr,
115                         "failed to parse URI: %s\n"
116                         "error message:       %s\n",
117                         uri_string,
118                         error.message);
119                return EXIT_FAILURE;
120             }
121
122             client = mongoc_client_new_from_uri (uri);
123             if (!client) {
124                return EXIT_FAILURE;
125             }
126
127             coll = mongoc_client_get_collection (client, "db", "example_coll");
128
129             mongoc_client_set_error_api (client, 2);
130             /* insert a document */
131             if (!mongoc_collection_insert_one (coll, to_insert, NULL, NULL, &error)) {
132                fprintf (stderr, "insert failed: %s\n", error.message);
133                return EXIT_FAILURE;
134             }
135
136             if (!mongoc_collection_update_one (
137                    coll, selector, update, NULL, NULL, &error)) {
138                fprintf (stderr, "update failed: %s\n", error.message);
139                return EXIT_FAILURE;
140             }
141
142             to_str = bson_as_relaxed_extended_json (to_insert, NULL);
143             printf ("inserted: %s\n", to_str);
144             bson_free (to_str);
145
146             cursor = mongoc_collection_find_with_opts (coll, selector, NULL, NULL);
147             BSON_ASSERT (mongoc_cursor_next (cursor, &next_doc));
148             printf ("after update, collection has the following document:\n");
149
150             to_str = bson_as_relaxed_extended_json (next_doc, NULL);
151             printf ("%s\n", to_str);
152             bson_free (to_str);
153
154             BSON_ASSERT (mongoc_collection_drop (coll, NULL));
155
156             bson_destroy (to_insert);
157             bson_destroy (update);
158             bson_destroy (selector);
159             mongoc_collection_destroy (coll);
160             mongoc_uri_destroy (uri);
161             mongoc_client_destroy (client);
162
163             return EXIT_SUCCESS;
164          }
165
166
167       SEE ALSO:
168          MongoDB update command documentation for more information on the update options.
169
170          mongoc_collection_update_many()
171
172          mongoc_collection_replace_one()
173
174

AUTHOR

176       MongoDB, Inc
177
179       2017-present, MongoDB, Inc
180
181
182
183
1841.23.1                           Oct 20, 2022  MONGOC_COLLECTION_UPDATE_ONE(3)
Impressum