1MONGOC_COLLECTION_UPDATE_ONE(3) libmongoc MONGOC_COLLECTION_UPDATE_ONE(3)
2
3
4
6 mongoc_collection_update_one - mongoc_collection_update_one()
7
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
18 · collection: A mongoc_collection_t.
19
20 · selector: A bson_t containing the query to match the document for
21 updating.
22
23 · update: A bson_t containing the update to perform. If updating with a
24 pipeline, a bson_t array.
25
26 · reply: Optional. An uninitialized bson_t populated with the update
27 result, or NULL.
28
29 · error: 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
33 · writeConcern: Construct a mongoc_write_concern_t and use mon‐
34 goc_write_concern_append to add the write concern to opts. See the
35 example code for mongoc_client_write_command_with_opts.
36
37 · sessionId: First, construct a mongoc_client_session_t with mon‐
38 goc_client_start_session. You can begin a transaction with mon‐
39 goc_client_session_start_transaction, optionally with a mongoc_trans‐
40 action_opt_t that overrides the options inherited from collection,
41 and use mongoc_client_session_append to add the session to opts. See
42 the example code for mongoc_client_session_t.
43
44 · validate: 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
48 · bypassDocumentValidation: Set to true to skip server-side schema val‐
49 idation of the provided BSON documents.
50
51 · collation: Configure textual comparisons. See Setting Collation
52 Order, and the MongoDB Manual entry on Collation. Collation requires
53 MongoDB 3.2 or later, otherwise an error is returned.
54
55 · hint: A document or string that specifies the index to use to support
56 the query predicate.
57
58 · upsert: When true, creates a new document if no document matches the
59 query.
60
61 · arrayFilters: An array of filters specifying to which array elements
62 an update should apply.
63
65 This function updates at most one document in collection that matches
66 selector.
67
68 To update multiple documents see mongoc_collection_update_many.
69
70 If you pass a non-NULL reply, it is filled out with fields matched‐
71 Count, modifiedCount, and optionally upsertedId if applicable. If there
72 is a server error then reply contains either a "writeErrors" array with
73 one subdocument or a "writeConcernErrors" array. The reply must be
74 freed with bson_destroy().
75
77 MongoDB update command documentation for more information on the update
78 options.
79
80 mongoc_collection_update_many
81
82 mongoc_collection_replace_one
83
85 Errors are propagated via the error parameter.
86
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
94 example-update.c.INDENT 0.0
95
96 #include "mongoc/mongoc.h"
97
98 int
99 main (int argc, char **argv)
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
168 MongoDB, Inc
169
171 2017-present, MongoDB, Inc
172
173
174
175
1761.16.2 Feb 25, 2020 MONGOC_COLLECTION_UPDATE_ONE(3)