Overview
Los índices compuestos contienen referencias a múltiples campos dentro de los documentos de una colección, lo que mejora el rendimiento de las consultas y la ordenación. Utilice
mongoc_collection_create_indexes_with_opts() Función para crear índices compuestos.
Al crear un índice compuesto, debe especificar los siguientes componentes:
Los campos a indexar.
El orden de clasificación de cada campo (ascendente o descendente). Especifique
BCON_INT32(1)para orden ascendente yBCON_INT32(-1)para orden descendente.
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 compuesto
El siguiente ejemplo crea un índice compuesto en los campos type y genres, con ambos campos indexados en orden ascendente:
bson_error_t error; bson_t *keys = BCON_NEW("type", BCON_INT32(1), "genres", 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 ejemplo realiza una consulta que utiliza el índice creado en el ejemplo de código anterior:
const bson_t *doc; bson_t *filter = BCON_NEW("type", BCON_UTF8("movie"), "genres", BCON_UTF8("Drama")); 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" : ..., "genres" : [ "Crime", "Drama" ], "title" : "Traffic in Souls", "type" : "movie", ... } { "_id" : ..., "genres" : [ "Drama" ], "title" : "Laugh, Clown, Laugh", "type" : "movie", ... } { "_id" : ..., "genres" : [ "Drama", "Romance" ], "title" : "A Woman of Paris: A Drama of Fate", "type" : "movie", ... } { "_id" : ..., "genres" : [ "Drama", "Romance", "Thriller" ], "title" : "He Who Gets Slapped", "type" : "movie", ... } { "_id" : ..., "genres" : [ "Drama", "Romance" ], "title" : "Wild Oranges", "type" : "movie", ... } ...
Información Adicional
Para obtener más información sobre los índices compuestos, consulte Índices compuestos en el manual de MongoDB Server.
Para obtener más información sobre estrategias de indexación efectivas utilizando índices compuestos, consulte La regla ESR en el manual del servidor MongoDB.
Documentación de la API
Para obtener más información sobre cualquiera de los métodos analizados en esta guía, consulte la siguiente documentación de API: