Docs Menu
Docs Home
/ / /
C Driver
/ /

Single-Field Indexes

On this page

  • Overview
  • Sample Data
  • Create Single-Field Index
  • Additional Information
  • API Documentation

Single-field indexes are indexes with a reference to a single field within a collection's documents. They improve single field query and sort performance, and support TTL Indexes that automatically remove documents from a collection after a certain amount of time or at a specific clock time.

When creating a single-field index, you must specify the following:

  • The field on which to create the index.

  • The sort order for the indexed values (ascending or descending). Specify BCON_INT32 (1) for ascending order and BCON_INT32 (-1) for descending order.

Note

The _id_ index is an example of a single-field index. This index is automatically created on the _id field when a new collection is created.

The examples in this guide use the movies collection in the sample_mflix database from the Atlas sample datasets. To learn how to create a free MongoDB Atlas cluster and load the sample datasets, see the Get Started with Atlas guide.

The following example creates an index in ascending order on the title field:

bson_error_t error;
bson_t *keys = BCON_NEW ("title", BCON_INT32 (1));
mongoc_index_model_t *index_model = mongoc_index_model_new (keys, NULL);
if (mongoc_collection_create_indexes_with_opts (collection, &index_model, 1, NULL, NULL, &error)) {
printf ("Successfully created index\n");
} else {
fprintf (stderr, "Failed to create index: %s", error.message);
}
bson_destroy (keys);
mongoc_index_model_destroy (index_model);

The following is an example of a query that is covered by the index created in the preceding code example:

const bson_t *doc;
bson_t *filter = BCON_NEW ("title", "Batman");
mongoc_cursor_t *results =
mongoc_collection_find_with_opts (collection, filter, NULL, NULL);
while (mongoc_cursor_next (results, &doc)) {
char *str = bson_as_canonical_extended_json (doc, NULL);
printf ("%s\n", str);
bson_free (str);
}
mongoc_cursor_destroy (results);
bson_destroy (filter);
{ "_id" : ..., "title" : "Batman", ... }

To learn more about single-field indexes, see Single Field Indexes in the MongoDB Server manual.

To learn more about any of the functions discussed in this guide, see the following API documentation:

Back

Work with Indexes