Visão geral
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 eBCON_INT32(-1)para ordem decrescente.
Dados de amostra
Os exemplos neste guia utilizam a coleção do movies no banco de dados do sample_mflix 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 MongoDB Get Started.
Criar um índice composto
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);Informações adicionais
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 .
Documentação da API
Para saber mais sobre qualquer um dos métodos discutidos nesta guia, consulte a seguinte documentação da API: