typedef struct _mongoc_index_model_t mongoc_index_model_t;

mongoc_index_model_t *
mongoc_index_model_new (const bson_t *keys, const bson_t *opts);

void mongoc_index_model_destroy (mongoc_index_model_t *model);

mongoc_collection_create_indexes_with_opts (mongoc_collection_t *collection,
                                            mongoc_index_model_t **models,
                                            size_t n_models,
                                            const bson_t *opts,
                                            bson_t *reply,
                                            bson_error_t *error);


  • collection: A mongoc_collection_t.
  • models: An array of mongoc_index_model_t *.
  • n_models: The number of models.
  • opts: Optional options.
  • reply: An optional location for the server reply to the createIndexes command.
  • error: An optional location for a bson_error_t or NULL.

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

Additional options passed in opts are appended to the createIndexes command. See the MongoDB Manual for createIndexes for all supported options.

If no write concern is provided in opts, the collection’s write concern is used.


Each mongoc_index_model_t represents an index to create. mongoc_index_model_new includes:

  • keys Expected to match the form of the key field in the createIndexes command.
  • opts Optional index options appended as a sibling to the key field in the createIndexes command.


This function wraps around the createIndexes command.


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.