Para agentes de IA: um índice de documentação está disponível em https://www.mongodb.com/pt-br/docs/llms.txt — as versões de markdown de todas as páginas estão disponíveis anexando .md a qualquer caminho de URL.
Menu Docs

Otimizar queries com índices

Nesta página, você pode ver exemplos de código copiáveis que demonstram como usar o driver C++ para trabalhar com tipos comuns de índices.

Dica

Para saber mais sobre qualquer um dos índices mostrados nesta página, consulte o link fornecido em cada seção.

To use an example from this page, copy the code example into the sample application or your own application. Be sure to replace all placeholders in the code examples, such as <connection string>, with the relevant values for your MongoDB deployment.

Você pode usar o seguinte aplicativo de exemplo para testar os exemplos de código nesta página. Para usar o aplicativo de amostra, execute as seguintes etapas:

  1. Verifique se você tem o driver C++ instalado em um local de onde seu projeto possa importá-lo.

  2. Copie o código a seguir e cole-o em um novo arquivo .cpp dentro do seu projeto.

  3. Copie um exemplo de código desta página e cole-o na seção destacada do arquivo.

1#include <iostream>
2
3#include <bsoncxx/builder/basic/document.hpp>
4#include <bsoncxx/json.hpp>
5#include <mongocxx/client.hpp>
6#include <mongocxx/exception/exception.hpp>
7#include <mongocxx/instance.hpp>
8#include <mongocxx/uri.hpp>
9
10using bsoncxx::builder::basic::kvp;
11using bsoncxx::builder::basic::make_document;
12
13int main() {
14 try {
15 mongocxx::instance instance;
16
17 mongocxx::uri uri("<connection string>");
18 mongocxx::client client(uri);
19
20 auto database = client["<database name>"];
21 auto collection = database["<collection name>"];
22
23 // Start example code here
24
25 // End example code here
26
27 } catch (const mongocxx::exception& e) {
28 std::cout << "An exception occurred: " << e.what() << "\n";
29 return EXIT_FAILURE;
30 }
31
32 return EXIT_SUCCESS;
33}

O seguinte código mostra como criar um índice de campo único ascendente:

auto index_specification = make_document(kvp("<fieldName>", 1));
auto result = collection.create_index(index_specification.view());
std::cout << "Index created: " << bsoncxx::to_json(result) << std::endl;

Para saber mais sobre índices de campo único, consulte o guia Índices de campo único.

O seguinte código mostra como criar um índice composto descendente:

auto index_specification = make_document(kvp("<fieldName1>", -1), kvp("<fieldName2>", -1));
auto result = collection.create_index(index_specification.view());
std::cout << "Index created: " << bsoncxx::to_json(result) << std::endl;

Para saber mais sobre índices compostos, consulte o guia Índices compostos .

O seguinte código mostra como remover um índice:

collection.indexes().drop_one("<indexName>");
std::cout << "Index dropped." << std::endl;

O seguinte código mostra como remover todos os índices em uma coleção:

collection.indexes().drop_all();
std::cout << "All indexes removed." << std::endl;

As seções a seguir contêm exemplos de código que descrevem como gerenciar índices de pesquisa MongoDB . Para aprender mais sobre os índices de pesquisa do MongoDB, consulte o Índices de pesquisa do MongoDB guia.

O código a seguir mostra como criar um índice de pesquisa do MongoDB Search que indexa dinamicamente todos os campos compatíveis na coleção especificada:

// Create an index model with your index name and definition
auto siv = collection.search_indexes();
auto name = "<searchIndexName>";
auto definition = make_document(kvp("mappings", make_document(kvp("dynamic", true))));
auto model = mongocxx::search_index_model(name, definition.view());
// Create the search index
auto result = siv.create_one(model);
std::cout << "New index name: " << result << std::endl;

O seguinte código imprime uma lista de índices de pesquisa MongoDB na coleção especificada:

auto siv = collection.search_indexes();
auto result = siv.list();
for (const auto &idx : result) {
std::cout << bsoncxx::to_json(idx) << std::endl;
}

O seguinte código atualiza um índice de pesquisa MongoDB existente com a nova definição de índice especificada:

auto siv = collection.search_indexes();
auto update_fields = make_document(kvp("<fieldName>", make_document(kvp("type", "<fieldType>"))));
auto update_definition = make_document(kvp("mappings", make_document(kvp("dynamic", false), kvp("fields", update_fields))));
siv.update_one("<searchIndexName>", update_definition.view());

O seguinte código excluir um índice de pesquisa MongoDB com o nome especificado:

auto siv = collection.search_indexes();
siv.drop_one("<searchIndexName>");