Overview
Los índices de campo único son índices que hacen referencia a un solo campo dentro de los documentos de una colección. Mejoran el rendimiento de las consultas y la ordenación de campos únicos, y son compatibles con los índices TTL, que eliminan automáticamente los documentos de una colección después de un tiempo determinado o en una hora específica.
Al crear un índice de campo único, debe especificar lo siguiente:
El campo en el que se debe crear el índice.
El orden de clasificación para los valores con índice (ascendente o descendente). Especifica
BCON_INT32(1)para orden ascendente yBCON_INT32(-1)para orden descendente.
Nota
El índice _id_ es un ejemplo de índice de campo único. Este índice se crea automáticamente en el campo _id al crear una nueva colección.
Datos de muestra
Los ejemplos en esta guía utilizan la colección movies en la base de datos sample_mflix de los conjuntos de datos de muestra de Atlas. Para aprender a crear un clúster gratuito de MongoDB Atlas y cargar los conjuntos de datos de muestra, consulta la guía MongoDB Primeros Pasos.
Crear un índice de campo único
El siguiente ejemplo crea un índice en orden ascendente en el campo title:
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);
El siguiente es un ejemplo de una consulta que está cubierta por el índice creado en el ejemplo de código anterior:
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", ... }
Información Adicional
Para obtener más información sobre los índices de campo único, consulte Índices de campo único en el manual de MongoDB Server.
Documentación de la API
Para aprender más sobre alguna de las funciones tratadas en esta guía, consulta la siguiente documentación de la API: