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

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

DESCRIPTION

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

SEE ALSO

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

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

AUTHOR

168       MongoDB, Inc
169
171       2017-present, MongoDB, Inc
172
173
174
175
1761.16.2                           Feb 25, 2020  MONGOC_COLLECTION_UPDATE_ONE(3)
Impressum