Provided by: libmongoc-doc_1.9.2+dfsg-1build1_all bug

NAME

       mongoc_collection_aggregate - mongoc_collection_aggregate()

SYNOPSIS

          mongoc_cursor_t *
          mongoc_collection_aggregate (mongoc_collection_t *collection,
                                       mongoc_query_flags_t flags,
                                       const bson_t *pipeline,
                                       const bson_t *opts,
                                       const mongoc_read_prefs_t *read_prefs)
             BSON_GNUC_WARN_UNUSED_RESULT;

PARAMETERS

collection: A mongoc_collection_t.

       • flags: A mongoc_query_flags_t.

       • pipeline: A bson_t containing the pipeline array.

       • opts: A bson_t containing options for the command, or NULL.

       • read_prefs: A mongoc_read_prefs_t or NULL.

       opts may be NULL or a BSON document with additional command options:

       • readConcern: Construct a mongoc_read_concern_t and use mongoc_read_concern_append to add
         the read concern to opts. See the example code for mongoc_client_read_command_with_opts.
         Read concern requires MongoDB 3.2 or later, otherwise an error is returned.

       • writeConcern:   For   aggregations   that   include   "$out",   you   can   construct  a
         mongoc_write_concern_t and use mongoc_write_concern_append to add the write  concern  to
         opts. See the example code for mongoc_client_write_command_with_opts.

       • sessionId:  Construct a mongoc_client_session_t with mongoc_client_start_session and use
         mongoc_client_session_append to add the session  to  opts.  See  the  example  code  for
         mongoc_client_session_t.

       • bypassDocumentValidation:  Set  to  true  to  skip  server-side schema validation of the
         provided BSON documents.

       • collation: Configure textual comparisons. See Setting Collation Order, and  the  MongoDB
         Manual  entry  on Collation. Collation requires MongoDB 3.2 or later, otherwise an error
         is returned.

       • serverId: To target a specific server, include an int32 "serverId" field. Obtain the  id
         by  calling mongoc_client_select_server, then mongoc_server_description_id on its return
         value.

       For a list of all options, see the MongoDB Manual entry on the aggregate command.

DESCRIPTION

       This function shall execute an aggregation query on the underlying 'collection'. The  bson
       'pipeline'  is  not validated, simply passed along as appropriate to the server.  As such,
       compatibility and errors should be validated in the appropriate server documentation.

       For more information on building MongoDB pipelines, see the MongoDB Manual  entry  on  the
       aggregate command.

       NOTE:
          The pipeline parameter should contain a field named pipeline containing a BSON array of
          pipeline stages.

       Read concern is applied from opts or else from collection. Collation is applied from  opts
       (see  example  for  the  "distinct"  command with opts). Read preferences are applied from
       read_prefs or else from collection. Write concern is applied from opts, or if opts has  no
       write  concern  and the aggregation pipeline includes "$out", the write concern is applied
       from collection. The write concern is omitted for MongoDB before 3.4.

RETURNS

       This function returns  a  newly  allocated  mongoc_cursor_t  that  should  be  freed  with
       mongoc_cursor_destroy() when no longer in use. The returned mongoc_cursor_t is never NULL;
       if the parameters are invalid, the bson_error_t in the mongoc_cursor_t is filled out,  and
       the mongoc_cursor_t is returned before the server is selected.

       WARNING:
          Failure to handle the result of this function is a programming error.

EXAMPLE

          #include <bcon.h>
          #include <mongoc.h>

          static mongoc_cursor_t *
          pipeline_query (mongoc_collection_t *collection)
          {
             mongoc_cursor_t *cursor;
             bson_t *pipeline;

             pipeline = BCON_NEW ("pipeline",
                                  "[",
                                  "{",
                                  "$match",
                                  "{",
                                  "foo",
                                  BCON_UTF8 ("A"),
                                  "}",
                                  "}",
                                  "{",
                                  "$match",
                                  "{",
                                  "bar",
                                  BCON_BOOL (false),
                                  "}",
                                  "}",
                                  "]");

             cursor = mongoc_collection_aggregate (
                collection, MONGOC_QUERY_NONE, pipeline, NULL, NULL);

             bson_destroy (pipeline);

             return cursor;
          }

OTHER PARAMETERS

       When  using  $out,  the  pipeline  stage  that  writes,  the  write_concern  field  of the
       mongoc_cursor_t will be set to the mongoc_write_concern_t parameter, if it is  valid,  and
       applied  to  the  write  command  when  mongoc_cursor_next()  is  called.  Pass  any other
       parameters to the aggregate command, besides pipeline, as fields in opts:

          mongoc_write_concern_t *write_concern = mongoc_write_concern_new ();
          mongoc_write_concern_set_w (write_concern, 3);

          pipeline =
             BCON_NEW ("pipeline", "[", "{", "$out", BCON_UTF8 ("collection2"), "}", "]");

          opts = BCON_NEW ("bypassDocumentValidation", BCON_BOOL (true));
          mongoc_write_concern_append (write_concern, opts);

          cursor = mongoc_collection_aggregate (
             collection1, MONGOC_QUERY_NONE, pipeline, opts, NULL);

AUTHOR

       MongoDB, Inc

COPYRIGHT

       2018, MongoDB, Inc