Overview
Los índicesmulticlave mejoran el rendimiento de las consultas en campos con valores de matriz. Se pueden definir con la misma sintaxis que los índices de campo único o compuestos.
Datos de muestra
Los ejemplos de esta guía utilizan el movies colección en la base de datos sample_mflix de la Conjuntos de datos de ejemplo de Atlas. Para aprender a crear un clúster gratuito de MongoDB Atlas y cargar los conjuntos de datos de ejemplo, consulte 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 consulta que utiliza el índice creado en el ejemplo de código 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);
{ "_id" : ..., "cast" : [ "Kelsey Grammer", "Cary Elwes", "Viola Davis", "John C. McGinley" ], "title" : "The Pentagon Wars", ... } { "_id" : ..., "cast" : [ "George Clooney", "Natascha McElhone", "Viola Davis", "Jeremy Davies" ], "title" : "Solaris", ... } { "_id" : ..., "cast" : [ "Meryl Streep", "Philip Seymour Hoffman", "Amy Adams", "Viola Davis" ], "title" : "Doubt", ... } { "_id" : ..., "cast" : [ "Hugh Jackman", "Jake Gyllenhaal", "Viola Davis", "Maria Bello" ], "title" : "Prisoners", ... } { "_id" : ..., "cast" : [ "Emma Stone", "Viola Davis", "Bryce Dallas Howard", "Octavia Spencer" ], "title" : "The Help", ... } ...
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: