mongoc_cursor_t *
mongoc_database_command (mongoc_database_t *database,
                         mongoc_query_flags_t flags,
                         uint32_t skip,
                         uint32_t limit,
                         uint32_t batch_size,
                         const bson_t *command,
                         const bson_t *fields,
                         const mongoc_read_prefs_t *read_prefs)

This function is superseded by mongoc_database_command_with_opts(), mongoc_database_read_command_with_opts(), mongoc_database_write_command_with_opts(), and mongoc_database_read_write_command_with_opts().


This function creates a cursor which will execute the command when mongoc_cursor_next() is called on it. The database’s read preference, read concern, and write concern are not applied to the command, and mongoc_cursor_next() will not check the server response for a write concern error or write concern timeout.

This function is not considered a retryable read operation.


  • database: A mongoc_database_t.

  • flags: A mongoc_query_flags_t.

  • skip: The number of documents to skip on the server.

  • limit: The maximum number of documents to return from the cursor.

  • batch_size: Attempt to batch results from the server in groups of batch_size documents.

  • command: A bson_t containing the command.

  • fields: An optional bson_t containing the fields to return. NULL for all fields.

  • read_prefs: An optional mongoc_read_prefs_t. Otherwise, the command uses mode MONGOC_READ_PRIMARY.


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.


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