Índices compostos
Nesta página
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 mongoc_collection_create_indexes_with_opts()
função 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 usam a collection movies
no banco de dados sample_mflix
dos conjuntos de banco 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 com Atlas .
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);
{ "_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", ... } ...
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: