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

FreeBSD Manual Pages

  
 
  

home | help
MONGOC_COLLECT...FIND_WITH_OPTS(3) libmongocMONGOC_COLLECT...FIND_WITH_OPTS(3)

SYNOPSIS
	  mongoc_cursor_t *
	  mongoc_collection_find_with_opts (mongoc_collection_t	*collection,
					    const bson_t *filter,
					    const bson_t *opts,
					    const mongoc_read_prefs_t *read_prefs);

PARAMETERS
        collection: A mongoc_collection_t.

        filter: A bson_t containing the query to execute.

        opts:	A  bson_t query	options, including sort	order and which	fields
	 to return. Can	be NULL.

        read_prefs: A mongoc_read_prefs_t or NULL.

DESCRIPTION
       Query on	collection, passing arbitrary query options to the  server  in
       opts.

       To  target  a  specific	server,	include	an integer "serverId" field in
       opts	with	 an	id     obtained	    first      by      calling
       mongoc_client_select_server(),  then  mongoc_server_description_id() on
       its return value.

       Read preferences, read concern, and collation can be overridden by var-
       ious sources. In	a transaction, read concern and	write concern are pro-
       hibited in opts and the read preference must be primary	or  NULL.  The
       highest-priority	sources	for these options are listed first in the fol-
       lowing table. No	write concern is applied.
		  +------------------+--------------+-----------+
		  | Read Preferences | Read Concern | Collation	|
		  +------------------+--------------+-----------+
		  | read_prefs	     | opts	    | opts	|
		  +------------------+--------------+-----------+
		  | Transaction	     | Transaction  |		|
		  +------------------+--------------+-----------+
		  | collection	     |		    |		|
		  +------------------+--------------+-----------+

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

       This function is	considered a retryable read operation.	Upon  a	 tran-
       sient error (a network 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.

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

EXAMPLES
       Print First Ten Documents in a Collection

	  #include <bson/bson.h>
	  #include <mongoc/mongoc.h>
	  #include <stdio.h>

	  static void
	  print_ten_documents (mongoc_collection_t *collection)
	  {
	     bson_t *filter;
	     bson_t *opts;
	     mongoc_cursor_t *cursor;
	     bson_error_t error;
	     const bson_t *doc;
	     char *str;

	     /*	filter by "foo": 1, order by "bar" descending */
	     filter = BCON_NEW ("foo", BCON_INT32 (1));
	     opts = BCON_NEW (
		"limit", BCON_INT64 (10), "sort", "{", "bar", BCON_INT32 (-1), "}");

	     cursor = mongoc_collection_find_with_opts (collection, filter, opts, NULL);

	     while (mongoc_cursor_next (cursor,	&doc)) {
		str = bson_as_canonical_extended_json (doc, NULL);
		printf ("%s\n",	str);
		bson_free (str);
	     }

	     if	(mongoc_cursor_error (cursor, &error)) {
		fprintf	(stderr, "An error occurred: %s\n", error.message);
	     }

	     mongoc_cursor_destroy (cursor);
	     bson_destroy (filter);
	     bson_destroy (opts);
	  }

       More examples of	modifying the query with opts:

	  bson_t *filter;
	  bson_t *opts;
	  mongoc_read_prefs_t *read_prefs;

	  filter = BCON_NEW ("foo", BCON_INT32 (1));

	  /* Include "field_name_one" and "field_name_two" in "projection", omit
	   * others. "_id" must	be specifically	removed	or it is included by default.
	   */
	  opts = BCON_NEW ("projection", "{",
			      "field_name_one",	BCON_BOOL (true),
			      "field_name_two",	BCON_BOOL (true),
			      "_id", BCON_BOOL (false),
			   "}",
			   "tailable", BCON_BOOL (true),
			   "awaitData",	BCON_BOOL (true),
			   "sort", "{",	"bar", BCON_INT32 (-1),	"}",
			   "collation",	"{",
			      "locale",	BCON_UTF8("en_US"),
			      "caseFirst", BCON_UTF8 ("lower"),
			   "}");

	  read_prefs = mongoc_read_prefs_new (MONGOC_READ_SECONDARY);

	  cursor =
	     mongoc_collection_find_with_opts (collection, filter, opts, read_prefs);

       The following options are supported.
       +-----------------+------------------+-----------------+--------------+
       | Option		 | BSON	type	    | Option	      |	BSON type    |
       +-----------------+------------------+-----------------+--------------+
       | projection	 | document	    | max	      |	document     |
       +-----------------+------------------+-----------------+--------------+
       | sort		 | document	    | maxTimeMS	      |	non-negative |
       |		 |		    |		      |	int64	     |
       +-----------------+------------------+-----------------+--------------+
       | skip		 | non-negative	    | maxAwaitTimeMS  |	non-negative |
       |		 | int64	    |		      |	int64	     |
       +-----------------+------------------+-----------------+--------------+
       | limit		 | non-negative	    | min	      |	document     |
       |		 | int64	    |		      |		     |
       +-----------------+------------------+-----------------+--------------+
       | batchSize	 | non-negative	    | noCursorTimeout |	bool	     |
       |		 | int64	    |		      |		     |
       +-----------------+------------------+-----------------+--------------+
       | exhaust	 | bool		    | oplogReplay     |	bool	     |
       +-----------------+------------------+-----------------+--------------+
       | hint		 | string  or docu- | readConcern     |	document     |
       |		 | ment		    |		      |		     |
       +-----------------+------------------+-----------------+--------------+
       | allowPartialRe- | bool		    | returnKey	      |	bool	     |
       | sults		 |		    |		      |		     |
       +-----------------+------------------+-----------------+--------------+
       | awaitData	 | bool		    | sessionId	      |	(none)	     |
       +-----------------+------------------+-----------------+--------------+
       | collation	 | document	    | showRecordId    |	bool	     |
       +-----------------+------------------+-----------------+--------------+
       | comment	 | any		    | singleBatch     |	bool	     |
       +-----------------+------------------+-----------------+--------------+
       | allowDiskUse	 | bool		    | let	      |	document     |
       +-----------------+------------------+-----------------+--------------+

       All options are documented in the reference page	for the	"find" command
       in the MongoDB server manual, except for	"maxAwaitTimeMS", "sessionId",
       and "exhaust".

       "maxAwaitTimeMS"	is the maximum amount of time for the server  to  wait
       on  new documents to satisfy a query, if	"tailable" and "awaitData" are
       both true.  If no new documents are found, the tailable cursor receives
       an empty	batch. The "maxAwaitTimeMS"  option  is	 ignored  for  MongoDB
       older than 3.4.

       To   add	  a  "sessionId",  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.	Then use mongoc_client_session_append()	to add the session  to
       opts. See the example code for mongoc_client_session_t.

       To   add	  a  "readConcern",  construct	a  mongoc_read_concern_t  with
       mongoc_read_concern_new()       and	 configure	 it	  with
       mongoc_read_concern_set_level().	 Then use mongoc_read_concern_append()
       to add the read concern to opts.

       "exhaust" requests the construction of an exhaust cursor.

       For some	options	like "collation", the driver returns an	error  if  the
       server  version	is too old to support the feature.  Any	fields in opts
       that are	not listed here	are passed to the server unmodified.

       allowDiskUse is only supported in MongoDB 4.4+.

       comment only supports string values prior to MongoDB 4.4.

DEPRECATED OPTIONS
       The snapshot boolean option is removed in MongoDB 4.0. The maxScan  op-
       tion,  a	 non-negative  int64, is deprecated in MongoDB 4.0 and will be
       removed in a future MongoDB version. The	oplogReplay boolean option  is
       deprecated  in MongoDB 4.4. All of these	options	are supported by the C
       Driver with older MongoDB versions.

       SEE ALSO:
	  The "find" command in	the MongoDB Manual. All	options	listed there are supported by the C Driver.  For MongoDB servers before	3.2, the driver	transparently converts the query to a legacy OP_QUERY message.

THE EXPLAIN COMMAND
       With MongoDB before 3.2,	a query	with option $explain: true returns in-
       formation about the query plan, instead of the query results. Beginning
       in MongoDB 3.2, there is	a separate "explain" command. The driver  will
       not convert "$explain" queries to "explain" commands, you must call the
       "explain" command explicitly:

	  /* MongoDB 3.2+, "explain" command syntax */
	  command = BCON_NEW ("explain", "{",
			      "find", BCON_UTF8	("collection_name"),
			      "filter",	"{", "foo", BCON_INT32 (1), "}",
			      "}");

	  mongoc_collection_command_simple (collection,	command, NULL, &reply, &error);

       SEE ALSO:
	  The "explain"	command	in the MongoDB Manual.

AUTHOR
       MongoDB,	Inc

COPYRIGHT
       2009-present, MongoDB, Inc.

1.30.2				 Apr 12, 202MONGOC_COLLECT...FIND_WITH_OPTS(3)

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

home | help