1MONGOC_COLLECTION_AGGREGATE(3) MongoDB C Driver MONGOC_COLLECTION_AGGREGATE(3)
2
3
4

NAME

6       mongoc_collection_aggregate - mongoc_collection_aggregate()
7

SYNOPSIS

9          mongoc_cursor_t *
10          mongoc_collection_aggregate (mongoc_collection_t *collection,
11                                       mongoc_query_flags_t flags,
12                                       const bson_t *pipeline,
13                                       const bson_t *opts,
14                                       const mongoc_read_prefs_t *read_prefs)
15             BSON_GNUC_WARN_UNUSED_RESULT;
16

PARAMETERS

18       · collection: A mongoc_collection_t.
19
20       · flags: A mongoc_query_flags_t.
21
22       · pipeline: A bson_t, either a BSON array or a BSON document containing
23         an array field named "pipeline".
24
25       · opts: A bson_t containing options for the command, or NULL.
26
27       · read_prefs: A mongoc_read_prefs_t or NULL.
28
29       opts may be NULL or a BSON document with additional command options:
30
31       · readConcern:  Construct  a   mongoc_read_concern_t   and   use   mon‐
32         goc_read_concern_append  to  add  the  read  concern to opts. See the
33         example code for mongoc_client_read_command_with_opts.  Read  concern
34         requires MongoDB 3.2 or later, otherwise an error is returned.
35
36       · writeConcern: For aggregations that include "$out", you can construct
37         a mongoc_write_concern_t and use mongoc_write_concern_append  to  add
38         the   write   concern   to  opts.  See  the  example  code  for  mon‐
39         goc_client_write_command_with_opts.
40
41       · sessionId:   Construct   a    mongoc_client_session_t    with    mon‐
42         goc_client_start_session  and use mongoc_client_session_append to add
43         the session to opts. See  the  example  code  for  mongoc_client_ses‐
44         sion_t.
45
46       · bypassDocumentValidation: Set to true to skip server-side schema val‐
47         idation of the provided BSON documents.
48
49       · collation:  Configure  textual  comparisons.  See  Setting  Collation
50         Order,  and the MongoDB Manual entry on Collation. Collation requires
51         MongoDB 3.2 or later, otherwise an error is returned.
52
53       · serverId: To target a specific server, include  an  int32  "serverId"
54         field.  Obtain  the  id  by calling mongoc_client_select_server, then
55         mongoc_server_description_id on its return value.
56
57       · batchSize: To specify the number of documents to return in each batch
58         of a response from the server, include an int "batchSize" field.
59
60       For  a  list of all options, see the MongoDB Manual entry on the aggre‐
61       gate command.
62
63       This function is considered a retryable read operation unless the pipe‐
64       line  contains  a  write  stage  like $out or $merge.  Upon a transient
65       error (a network error, errors due to replica set failover,  etc.)  the
66       operation  is  safely  retried once.  If retryreads is false in the URI
67       (see mongoc_uri_t) the retry behavior does not apply.
68

DESCRIPTION

70       This function creates a cursor which sends the aggregate command on the
71       underlying  collection upon the first call to mongoc_cursor_next(). For
72       more information on building aggregation  pipelines,  see  the  MongoDB
73       Manual entry on the aggregate command.
74
75       Read preferences, read and write concern, and collation can be overrid‐
76       den by various sources. The highest-priority sources for these  options
77       are listed first in the following table. In a transaction, read concern
78       and write concern are prohibited in opts and the read  preference  must
79       be  primary or NULL. Write concern is applied from opts, or if opts has
80       no write concern and the  aggregation  pipeline  includes  "$out",  the
81       write  concern is applied from collection. The write concern is omitted
82       for MongoDB before 3.4.
83
84            ┌─────────────────┬──────────────┬───────────────┬───────────┐
85            │Read Preferences │ Read Concern │ Write Concern │ Collation │
86            ├─────────────────┼──────────────┼───────────────┼───────────┤
87read_prefs       opts         opts          opts      
88            ├─────────────────┼──────────────┼───────────────┼───────────┤
89            │Transaction      │ Transaction  │ Transaction   │           │
90            ├─────────────────┼──────────────┼───────────────┼───────────┤
91collection       collection   collection    │           │
92            └─────────────────┴──────────────┴───────────────┴───────────┘
93
94       See the example for transactions and for the  "distinct"  command  with
95       opts.
96

RETURNS

98       This  function returns a newly allocated mongoc_cursor_t that should be
99       freed with mongoc_cursor_destroy() when no longer in use. The  returned
100       mongoc_cursor_t  is  never  NULL;  if  the  parameters are invalid, the
101       bson_error_t in the mongoc_cursor_t is filled out, and the  mongoc_cur‐
102       sor_t  is  returned  before  the server is selected. The user must call
103       mongoc_cursor_next() on the returned  mongoc_cursor_t  to  execute  the
104       aggregation pipeline.
105
106       WARNING:
107          Failure  to  handle  the  result  of  this function is a programming
108          error.
109

EXAMPLE

111          #include <bson/bson.h>
112          #include <mongoc/mongoc.h>
113
114          static mongoc_cursor_t *
115          pipeline_query (mongoc_collection_t *collection)
116          {
117             mongoc_cursor_t *cursor;
118             bson_t *pipeline;
119
120             pipeline = BCON_NEW ("pipeline",
121                                  "[",
122                                  "{",
123                                  "$match",
124                                  "{",
125                                  "foo",
126                                  BCON_UTF8 ("A"),
127                                  "}",
128                                  "}",
129                                  "{",
130                                  "$match",
131                                  "{",
132                                  "bar",
133                                  BCON_BOOL (false),
134                                  "}",
135                                  "}",
136                                  "]");
137
138             cursor = mongoc_collection_aggregate (
139                collection, MONGOC_QUERY_NONE, pipeline, NULL, NULL);
140
141             bson_destroy (pipeline);
142
143             return cursor;
144          }
145

OTHER PARAMETERS

147       When using $out, the pipeline  stage  that  writes,  the  write_concern
148       field  of the mongoc_cursor_t will be set to the mongoc_write_concern_t
149       parameter, if it is valid, and applied to the write command  when  mon‐
150       goc_cursor_next() is called. Pass any other parameters to the aggregate
151       command, besides pipeline, as fields in opts:
152
153          mongoc_write_concern_t *write_concern = mongoc_write_concern_new ();
154          mongoc_write_concern_set_w (write_concern, 3);
155
156          pipeline =
157             BCON_NEW ("pipeline", "[", "{", "$out", BCON_UTF8 ("collection2"), "}", "]");
158
159          opts = BCON_NEW ("bypassDocumentValidation", BCON_BOOL (true));
160          mongoc_write_concern_append (write_concern, opts);
161
162          cursor = mongoc_collection_aggregate (
163             collection1, MONGOC_QUERY_NONE, pipeline, opts, NULL);
164

AUTHOR

166       MongoDB, Inc
167
169       2017-present, MongoDB, Inc
170
171
172
173
1741.15.2                           Nov 06, 2019   MONGOC_COLLECTION_AGGREGATE(3)
Impressum