1MONGOC_DATABASE_AGGREGATE(3)       libmongoc      MONGOC_DATABASE_AGGREGATE(3)
2
3
4

NAME

6       mongoc_database_aggregate - mongoc_database_aggregate()
7

SYNOPSIS

9          mongoc_cursor_t *
10          mongoc_database_aggregate (mongoc_database_t *database,
11                                     const bson_t *pipeline,
12                                     const bson_t *opts,
13                                     const mongoc_read_prefs_t *read_prefs)
14             BSON_GNUC_WARN_UNUSED_RESULT;
15

PARAMETERS

17       · database: A mongoc_database_t.
18
19       · pipeline: A bson_t, either a BSON array or a BSON document containing
20         an array field named "pipeline".
21
22       · opts: A bson_t containing options for the command, or NULL.
23
24       · read_prefs: A mongoc_read_prefs_t or NULL.
25
26       opts may be NULL or a BSON document with additional command options:
27
28       · readConcern:  Construct  a   mongoc_read_concern_t   and   use   mon‐
29         goc_read_concern_append  to  add  the  read  concern to opts. See the
30         example code for mongoc_client_read_command_with_opts.  Read  concern
31         requires MongoDB 3.2 or later, otherwise an error is returned.
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 database,  and
41         use  mongoc_client_session_append to add the session to opts. See the
42         example code for mongoc_client_session_t.
43
44       · bypassDocumentValidation: Set to true to skip server-side schema val‐
45         idation of the provided BSON documents.
46
47       · collation:  Configure  textual  comparisons.  See  Setting  Collation
48         Order, and the MongoDB Manual entry on Collation. Collation  requires
49         MongoDB 3.2 or later, otherwise an error is returned.
50
51       · serverId:  To  target  a specific server, include an int32 "serverId"
52         field. Obtain the id  by  calling  mongoc_client_select_server,  then
53         mongoc_server_description_id on its return value.
54
55       · batchSize:  An int32 representing number of documents requested to be
56         returned on each call to mongoc_cursor_next
57
58       For a list of all options, see the MongoDB Manual entry on  the  aggre‐
59       gate command.
60

DESCRIPTION

62       This function creates a cursor which sends the aggregate command on the
63       underlying database upon the first call  to  mongoc_cursor_next().  For
64       more  information  on  building  aggregation pipelines, see the MongoDB
65       Manual entry on the aggregate command.  Note  that  the  pipeline  must
66       start  with a compatible stage that does not require an underlying col‐
67       lection (e.g. "$currentOp", "$listLocalSessions").
68
69       Read preferences, read and write concern, and collation can be overrid‐
70       den  by various sources. The highest-priority sources for these options
71       are listed first in the following table. In a transaction, read concern
72       and  write  concern are prohibited in opts and the read preference must
73       be primary or NULL. Write concern is applied from opts, or if opts  has
74       no  write  concern  and  the  aggregation pipeline includes "$out", the
75       write concern is applied from database.
76
77            ┌─────────────────┬──────────────┬───────────────┬───────────┐
78            │Read Preferences │ Read Concern │ Write Concern │ Collation │
79            ├─────────────────┼──────────────┼───────────────┼───────────┤
80read_prefs       opts         opts          opts      
81            ├─────────────────┼──────────────┼───────────────┼───────────┤
82            │Transaction      │ Transaction  │ Transaction   │           │
83            ├─────────────────┼──────────────┼───────────────┼───────────┤
84database         database     database      │           │
85            └─────────────────┴──────────────┴───────────────┴───────────┘
86
87       See the example for transactions and for the  "distinct"  command  with
88       opts.
89
90       This function is considered a retryable read operation unless the pipe‐
91       line contains a write stage like $out  or  $merge.   Upon  a  transient
92       error  (a  network error, errors due to replica set failover, etc.) the
93       operation is safely retried once.  If retryreads is false  in  the  URI
94       (see mongoc_uri_t) the retry behavior does not apply.
95

RETURNS

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

EXAMPLE

110          #include <bson/bson.h>
111          #include <mongoc/mongoc.h>
112
113          static mongoc_cursor_t *
114          current_op_query (mongoc_client_t *client)
115          {
116             mongoc_cursor_t *cursor;
117             mongoc_database_t *database;
118             bson_t *pipeline;
119
120             pipeline = BCON_NEW ("pipeline",
121                                  "[",
122                                  "{",
123                                  "$currentOp",
124                                  "{",
125                                  "}",
126                                  "}",
127                                  "]");
128
129             /* $currentOp must be run on the admin database */
130             database = mongoc_client_get_database (client, "admin");
131
132             cursor = mongoc_database_aggregate (
133                database, pipeline, NULL, NULL);
134
135             bson_destroy (pipeline);
136             mongoc_database_destroy (database);
137
138             return cursor;
139          }
140

AUTHOR

142       MongoDB, Inc
143
145       2017-present, MongoDB, Inc
146
147
148
149
1501.16.2                           Feb 25, 2020     MONGOC_DATABASE_AGGREGATE(3)
Impressum