Overview
Índices compuestos mantienen referencias a varios campos dentro de los documentos de una colección, mejorando el rendimiento de query y ordenación. Utiliza el
mongoc_collection_create_indexes_with_opts() Función para crear índices compuestos.
Al crear un índice compuesto, debes especificar los siguientes componentes:
Los campos a indexar.
El orden de clasificación para cada campo (ascendente o descendente). Especifique
BCON_INT32(1)para el orden ascendente yBCON_INT32(-1)para el 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, ambos 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 query que utiliza el índice creado en el código de muestra 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 saber más sobre los índices compuestos, consulta Índices Compuestos en el manual del MongoDB Server.
Para aprender sobre estrategias de indexación eficientes usando índices compuestos, consulta La Regla ESR en el manual de MongoDB Server.
Documentación de la API
Para obtener más información sobre cualquiera de los métodos mencionados en esta guía, consulta la siguiente documentación de la API: