mongoc_client_command_with_opts (
   mongoc_client_t *client,
   const char *db_name,
   const bson_t *command,
   const mongoc_read_prefs_t *read_prefs,
   const bson_t *opts,
   bson_t *reply,
   bson_error_t *error);

Execute a command on the server, interpreting opts according to the MongoDB server version. To send a raw command to the server without any of this logic, use mongoc_client_command_simple().

Read preferences are applied from read_prefs or else from client. Collation, read concern, and write concern are applied from opts (see example for the “distinct” command with opts). The write concern is ignored for MongoDB before 3.4.

reply is always initialized, and must be freed with bson_destroy().


  • client: A mongoc_client_t.
  • db_name: The name of the database to run the command on.
  • command: A bson_t containing the command specification.
  • read_prefs: An optional mongoc_read_prefs_t.
  • opts: A bson_t containing additional options.
  • reply: A location for the resulting document.
  • error: An optional location for a bson_error_t or NULL.

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

Consult the MongoDB Manual entry on Database Commands for each command’s arguments.


Errors are propagated via the error parameter.


Returns true if successful. Returns false and sets error if there are invalid arguments or a server or network error.

The reply is not parsed for a write concern timeout or write concern error.


See the example code for mongoc_client_read_command_with_opts().