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
/ /

Optimiza queries con índices

En esta página, puedes ver ejemplos de código copiables que demuestran cómo usar el driver C++ para trabajar con tipos comunes de índices.

Tip

Para obtener más información sobre cualquiera de los índices mostrados en esta página, consulta el enlace proporcionado en cada sección.

Para utilizar un ejemplo de esta página, copie el ejemplo de código en el aplicación de muestra o su propia aplicación. Asegúrese de reemplazar todos los marcadores de posición en los ejemplos de código, como <connection string>, con los valores relevantes para tu implementación de MongoDB.

Puede utilizar la siguiente aplicación de muestra para probar los ejemplos de código en esta página. Para usar la aplicación de muestra, siga los siguientes pasos:

  1. Asegúrate de tener instalado el driver C++ en una ubicación desde la que tu Proyecto pueda importarlo.

  2. Copie el siguiente código y péguelo en un nuevo archivo .cpp dentro de su proyecto.

  3. Copia un ejemplo de código de esta página y pégalo en la sección resaltada del archivo.

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}

El siguiente código muestra cómo crear un índice de un solo campo 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;
Index created: { "name" : "fieldName_1" }

Para obtener más información sobre índices de un solo campo, consulte la Guía de índices de campo único.

El siguiente código muestra cómo crear un índice compuesto 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;
Index created: { "name" : "fieldName1_-1_fieldName2_-1" }

Para aprender más sobre índices compuestos, consulta la guía de Índices compuestos.

El siguiente código muestra cómo remover un índice:

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

El siguiente código muestra cómo remover todos los índices en una colección:

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

Las siguientes secciones contienen ejemplos de código que describen cómo gestionar los índice MongoDB Search. Para obtener más información sobre los índices de búsqueda de MongoDB, consulte la guía de Índices de búsqueda de MongoDB.

El siguiente código muestra cómo crear un índice de MongoDB Search que indexa dinámicamente todos los campos soportados en la colección 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;
New index name: searchIndexName

El siguiente código imprime una lista de los índices de búsqueda de MongoDB en la colección especificada:

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

El siguiente código actualiza un índice existente de MongoDB Search con la nueva definición 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());

El siguiente código elimina un índice de búsqueda en MongoDB Search con el nombre especificado:

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

Volver

Bases de datos y colecciones

En esta página