Docs Menu
Docs Home
/ /

Delete Documents

En esta guía, puede aprender a utilizar el controlador C++ para eliminar documentos de una colección MongoDB realizando operaciones de eliminación.

Una operación de eliminación elimina uno o más documentos de una colección de MongoDB. Puede realizar una operación de eliminación mediante el comando delete_one() o métodos delete_many().

Los ejemplos de esta guía utilizan la colección restaurants en la base de datos sample_restaurants de la Conjuntos de datos de muestra de Atlas. Para acceder a esta colección desde su aplicación C++, cree una mongocxx::client instancia de que se conecte a un clúster de Atlas y asigne los siguientes valores a las variables db collection y:

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 muestra, consulte la guía de introducción a MongoDB.

Puede realizar operaciones de eliminación utilizando los siguientes métodos:

  • delete_one(), que elimina el primer documento que coincide con los criterios de búsqueda

  • delete_many(), que elimina todos los documentos que coinciden con los criterios de búsqueda

Cada método de eliminación requiere un documento de filtro de consulta, 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 consulta, consulte la sección "Documentos de filtro de consulta" en el manual de MongoDB Server.

El siguiente ejemplo utiliza el método delete_one() para eliminar un documento de 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")));

El siguiente ejemplo utiliza el método delete_many() para eliminar todos los documentos de la colección restaurants que tengan un valor borough de "Brooklyn":

auto result = collection.delete_many(make_document(kvp("borough", "Brooklyn")));

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

collation

Specifies the kind of language collation to use when sorting results. For more information, see Collation in the MongoDB Server manual.

write_concern

Sets the write concern for the operation. For more information, see Write Concern in the MongoDB Server manual.

hint

Gets or sets the index to scan for documents. For more information, see the hint statement in the MongoDB Server manual.

let

Specifies a document with a list of values to improve operation readability. Values must be constant or closed expressions that don't reference document fields. For more information, see the let statement in the MongoDB Server manual.

comment

Attaches a comment to the operation. For more information, see the delete command fields guide in the MongoDB Server manual.

El siguiente ejemplo llama al método delete_many() para eliminar todos los documentos de la colección restaurants que tengan un valor name que contenga la cadena "Mongo". También configura el campo comment de una instancia mongocxx::options::delete_options para añadir 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".

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 de escritura masiva sin procesar

  • deleted_count(), que devuelve el número de documentos eliminados

Si el filtro de consulta no coincide con ningún documento, el controlador no elimina ningún documento y deleted_count es 0.

El siguiente ejemplo llama al método delete_many() para eliminar documentos cuyo valor cuisine es "Greek". A continuación, llama a la función miembro deleted_count() para mostrar 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

Para aprender más sobre cualquiera de los métodos o tipos analizados en esta guía, consulta la siguiente documentación de API:

Volver

Reemplaza

En esta página