Menu Docs
Página inicial do Docs
/ /

Índices compostos

Os índices compostos contêm referências a vários campos dentro dos documentos de uma collection, melhorando o desempenho de query e classificação. Utilize a função mongoc_collection_create_indexes_with_opts() para criar índices compostos.

Ao criar um índice composto, você deve especificar os seguintes componentes:

  • Os campos para indexar.

  • A ordem de classificação para cada campo (crescente ou decrescente). Especifique BCON_INT32(1) para ordem crescente e BCON_INT32(-1) para ordem decrescente.

Os exemplos neste guia utilizam a movies coleção do sample_mflix no banco de dados do a partir do conjunto de dados de amostra do Atlas . Para saber como criar um cluster MongoDB Atlas gratuito e carregar os conjuntos de dados de amostra, consulte o guia Iniciar do MongoDB .

O exemplo seguinte cria um índice composto nos campos type e genres , com ambos os campos indexados em ordem crescente:

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);

O exemplo a seguir executa uma query que usa o índice criado na amostra 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", ... }
...

Para saber mais sobre índices compostos, consulte Índices compostos no manual do MongoDB Server .

Para saber mais sobre estratégias de indexação eficazes usando índices compostos, consulte A regra ESR no manual do MongoDB Server .

Para saber mais sobre qualquer um dos métodos discutidos nesta guia, consulte a seguinte documentação da API:

Voltar

Índices de campo único

Nesta página