Skip site navigation (1)Skip section navigation (2)

  
 
  

home | help
MONGOC_COLLECTION_AGGREGATE(3)	    libmongoc	  MONGOC_COLLECTION_AGGREGATE(3)

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);

PARAMETERS
     * collection: A mongoc_collection_t.

     * flags:  A mongoc_query_flags_t. Not all flag values apply. In particular,
       setting MONGOC_QUERY_EXHAUST results in an error.

     * pipeline: A bson_t, either a BSON array or a BSON document containing  an
       array field named "pipeline".

     * 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 ex-
       ample code for mongoc_client_read_command_with_opts(). Read  concern  re-
       quires MongoDB 3.2 or later, otherwise an error is returned.

     * writeConcern:	 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:    First,    construct    a	 mongoc_client_session_t    with
       mongoc_client_start_session().  You  can   begin   a   transaction   with
       mongoc_client_session_start_transaction(),      optionally     with     a
       mongoc_transaction_opt_t that overrides the options inherited  from  col-
       lection,  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  valida-
       tion 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.

     * batchSize:  An int32 representing number of documents requested to be re-
       turned on each call to mongoc_cursor_next()

     * let: A BSON document consisting of any number of  parameter  names,  each
       followed by definitions of constants in the MQL Aggregate Expression lan-
       guage.

     * comment: A bson_value_t specifying the comment to attach to this command.
       The  comment  will appear in log messages, profiler output, and currentOp
       output. Only string values are supported prior to MongoDB 4.4.

     * hint: A document or string that specifies the index to use to support the
       query predicate.

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

     This  function is considered a retryable read operation unless the pipeline
     contains a write stage like $out or $merge.  Upon a transient error (a net-
     work error, errors due to replica set  failover,  etc.)  the  operation  is
     safely  retried once.  If retryreads is false in the URI (see mongoc_uri_t)
     the retry behavior does not apply.

DESCRIPTION
     This function creates a cursor which sends the aggregate command on the un-
     derlying collection upon the first call to mongoc_cursor_next().  For  more
     information on building aggregation pipelines, see the MongoDB Manual entry
     on the aggregate command.

     Read  preferences,  read and write concern, and collation can be overridden
     by various sources. The highest-priority  sources	for  these  options  are
     listed  first  in	the  following table. In a transaction, read concern and
     write concern are prohibited in opts and the read preference must	be  pri-
     mary  or  NULL. 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.
	  +------------------+--------------+---------------+-----------+
	  | Read Preferences | Read Concern | Write Concern | Collation |
	  +------------------+--------------+---------------+-----------+
	  | read_prefs	     | opts	    | opts	    | opts	|
	  +------------------+--------------+---------------+-----------+
	  | Transaction      | Transaction  | Transaction   |		|
	  +------------------+--------------+---------------+-----------+
	  | collection	     | collection   | collection    |		|
	  +------------------+--------------+---------------+-----------+

     See the example for transactions and for the "distinct" command with opts.

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,	even  on  error.  The  user  must   call
     mongoc_cursor_next() on the returned mongoc_cursor_t to execute the initial
     command.

     Cursor errors can be checked with mongoc_cursor_error_document(). It always
     fills  out the bson_error_t if an error occurred, and optionally includes a
     server reply document if the error occurred server-side.

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

EXAMPLE
	#include <bson/bson.h>
	#include <mongoc/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
     2009-present, MongoDB, Inc.

1.30.8				  Aug 27, 2026	  MONGOC_COLLECTION_AGGREGATE(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=mongoc_collection_aggregate&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help