mongoc_collection_create_index_with_opts (mongoc_collection_t *collection,
                                          const bson_t *keys,
                                          const mongoc_index_opt_t *index_opts,
                                          const bson_t *command_opts,
                                          bson_t *reply,
                                          bson_error_t *error);


  • collection: A mongoc_collection_t.
  • keys: A bson_t.
  • index_opts: A mongoc_index_opt_t.
  • command_opts: A bson_t with extra options, such as writeConcern or collation, or NULL.
  • reply: An optional location for a bson_t which will store the server's reply.
  • error: An optional location for a bson_error_t or NULL.


This function will request the creation of a new index.

This function will use the createIndexes command if available on the MongoDB server. If not, it will fallback to inserting into system.indexes for compatibility with MongoDB <= 2.4.

The server's reply is stored in reply.

If no write concern is provided in command_opts, the collection's write concern is used.

See mongoc_index_opt_t for options on creating indexes.


Errors are propagated via the error parameter.


true on success, otherwise false and error is set.

reply is always initialized and must be destroyed with bson_destroy(). If the server is running an obsolete version of MongoDB then reply may be empty, though it will still be initialized.