Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

Índices compuestos

Í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 y BCON_INT32(-1) para el orden descendente.

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.

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", ... }
...

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.

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:

Volver

Índices de un solo campo

En esta página