Overview
En esta página, puede ver ejemplos de código copiables que demuestran cómo utilizar el controlador C++ para trabajar con tipos comunes de índices.
Tip
Para obtener más información sobre cualquiera de los índices que se muestran en esta página, consulte 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 ejemplo 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 su implementación de MongoDB.
Aplicación de muestra
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:
Asegúrate de tener instalado el driver C++ en una ubicación desde la que tu Proyecto pueda importarlo.
Copie el siguiente código y péguelo en un nuevo archivo
.cppdentro de su proyecto.Copie un ejemplo de código de esta página y péguelo dentro de la sección resaltada del archivo.
1 2 3 4 5 6 7 8 9 10 using bsoncxx::builder::basic::kvp; 11 using bsoncxx::builder::basic::make_document; 12 13 int 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 }
Índice de campo único
El siguiente código muestra cómo crear un índice ascendente de un solo campo:
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 los índices de campo único, consulte la Guíade índices de campo único.
Índice compuesto
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.
Eliminar un índice
El siguiente código muestra cómo eliminar un índice:
collection.indexes().drop_one("<indexName>"); std::cout << "Index dropped." << std::endl;
Index dropped.
Eliminar todos los índices
El siguiente código muestra cómo eliminar todos los índices de una colección:
collection.indexes().drop_all(); std::cout << "All indexes removed." << std::endl;
All indexes removed.
Gestión del índice de búsqueda de MongoDB
Las siguientes secciones contienen ejemplos de código que describen cómo administrar los índices de búsqueda de MongoDB. 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.
Crear índice de búsqueda
El siguiente código muestra cómo crear un índice de búsqueda de MongoDB que indexa dinámicamente todos los campos admitidos 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
Índices de búsqueda de listas
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; }
Actualizar índices de búsqueda
El siguiente código actualiza un índice de búsqueda de MongoDB existente 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());
Eliminar índices de búsqueda
El siguiente código elimina un índice de búsqueda de MongoDB con el nombre especificado:
auto siv = collection.search_indexes(); siv.drop_one("<searchIndexName>");