Overview
Los índices multiclave son índices que mejoran el rendimiento de las queries sobre campos con valor de arreglo. Puedes definir un índice multiclave utilizando la misma sintaxis que para un índice de campo único o compuesto.
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 de Introducción a MongoDB.
Crear un índice multiclave
El siguiente ejemplo crea un índice multiclave en el campo cast:
bson_error_t error; bson_t *keys = BCON_NEW("cast", 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("cast", BCON_UTF8("Viola Davis")); 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);
Los índices Multikey funcionan de manera diferente a otros índices en términos de cobertura de consultas, cálculo de límites del índice y comportamiento de ordenación. Para aprender más sobre los índices multikey, incluido un debate sobre su comportamiento y limitaciones, consulta la guía Índices Multikey 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: