Overview
En esta guía, puedes aprender cómo usar el driver de C++ para remover documentos de una colección de MongoDB realizando operaciones de borrado.
Una operación de borrado remueve uno o más documentos de una colección de MongoDB. Puedes realizar una operación de eliminación utilizando los métodos delete_one() o delete_many().
Datos de muestra
Los ejemplos de esta guía utilizan la colección restaurants en la base de datos sample_restaurants de los conjuntos de datos de muestra de Atlas. Para acceder a esta colección desde tu aplicación en C++, instancia un mongocxx::client que se conecte a un clúster Atlas y asigna los siguientes valores a tus variables db y collection:
auto db = client["sample_restaurants"]; auto collection = db["restaurants"];
Para aprender cómo crear un clúster gratuito de MongoDB Atlas y cargar los conjuntos de datos de ejemplo, consulta la guía MongoDB Get Started.
Operaciones de borrar
Puede realizar operaciones de eliminación utilizando los siguientes métodos:
delete_one()que elimina el primer documento que coincida con los criterios de búsquedadelete_many(), que borra todos los documentos que cumplen con los criterios de búsqueda
Cada método de eliminación requiere un documento de filtro de query, que especifica los criterios de búsqueda para determinar qué documentos seleccionar para su eliminación. Para obtener más información sobre los filtros de query, consulta la sección Documentos de Filtros de Query en el manual del MongoDB Server.
Borrar un documento
El siguiente ejemplo usa el método delete_one() para remover un documento en la colección restaurants que tiene un valor name de "Ready Penny Inn":
auto result = collection.delete_one(make_document(kvp("name", "Ready Penny Inn")));
Borra varios documentos
El siguiente ejemplo utiliza el método delete_many() para remover todos los documentos en la colección restaurants que tienen un valor borough de "Brooklyn":
auto result = collection.delete_many(make_document(kvp("borough", "Brooklyn")));
Personaliza la operación de borrar
Puedes modificar el comportamiento de los métodos delete_one() y delete_many() pasando una instancia de la clase mongocxx::options::delete_options como parámetro opcional. La siguiente tabla describe los campos que puede establecer en una instancia de mongocxx::options::delete_options:
Campo | Descripción |
|---|---|
| Especifica el tipo de intercalación de lenguaje a usar al ordenar los resultados. Para obtener más información, consulte intercalación en el manual de MongoDB Server. |
| Establece el nivel de confirmación de escritura (write concern) para la operación. Para más información, consulta nivel de confirmación de escritura (Write Concern) en el manual de MongoDB Server. |
| Obtiene o define el índice para escanear documentos. Para obtener más información, consulta la instrucción de sugerencia en el manual del MongoDB Server. |
| Especifica un documento con una lista de valores para mejorar la legibilidad de la operación. Los valores deben ser expresiones constantes o cerradas que no hagan referencia a campos de documentos. Para obtener más información, consulta la instrucción let en el manual de MongoDB Server. |
| Anexa un comentario a la operación. Para obtener más información, consulta la guía sobre los campos del comando borrar en el manual del MongoDB Server. |
El siguiente ejemplo llama al método delete_many() para borrar todos los documentos en la colección restaurants que tienen un valor name que contiene la cadena "Mongo". También establecerá el campo comment de una instancia de mongocxx::options::delete_options para agregar un comentario a la operación:
mongocxx::options::delete_options opts{}; opts.comment(bsoncxx::types::bson_value::view_or_value{"Deleting Mongo restaurants"}); auto query_filter = make_document(kvp("name", make_document(kvp("$regex", "Mongo")))); auto result = collection.delete_many(query_filter.view(), opts);
Tip
Si el ejemplo anterior utilizó el método delete_one() en lugar de delete_many(), el controlador solo eliminaría el primer documento que tenga un valor name que contenga "Mongo".
Valor de retorno
Los métodos delete_one() y delete_many() devuelven una instancia de la clase mongocxx::result::delete_result. Esta clase contiene las siguientes funciones miembro:
result()(que devuelve el resultado bruto de guardado masivo)deleted_count()que devuelve el número de documentos eliminados
Si el filtro de query no coincide con ningún documento, el driver no borra ningún documento y deleted_count es 0.
El siguiente ejemplo llama al método delete_many() para eliminar documentos que tienen un valor de cuisine de "Greek". Luego, llama a la función nodo deleted_count() para imprimir el número de documentos eliminados:
auto result = collection.delete_many(make_document(kvp("cuisine", "Greek"))); std::cout << result->deleted_count() << std::endl;
Deleted documents: 111
Documentación de la API
Para aprender más sobre cualquiera de los métodos o tipos analizados en esta guía, consulta la siguiente documentación de API: