Overview
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 mongoc_collection_delete_one()
o funciones mongoc_collection_delete_many().
Datos de muestra
Los ejemplos de esta guía utilizan la colección restaurants en la base de datos sample_restaurants de la Conjuntos de datos de ejemplo de Atlas. Para aprender a crear un clúster gratuito de MongoDB Atlas y cargar los conjuntos de datos de ejemplo, consulte la guía de introducción a MongoDB.
Operaciones de borrar
Puede realizar operaciones de eliminación utilizando las siguientes funciones:
mongoc_collection_delete_one(), que elimina el primer documento que coincide con los criterios de búsquedamongoc_collection_delete_many(), que elimina todos los documentos que coinciden con los criterios de búsqueda
Cada función de borrado acepta los siguientes parámetros:
Colección: especifica la colección a modificar.
Documento de filtro de consulta: Especifica qué documentos de colección se eliminará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.
Ubicación delos resultados: especifica un puntero al almacenamiento sobrescribible que contendrá los resultados de la operación,
NULLo.Ubicación del error: especifica una ubicación para un valor de error
NULLo.
Borrar un documento
Utilice la siguiente sintaxis para eliminar un documento:
bson_t *filter = BCON_NEW("<field name>", BCON_UTF8("<value>")); bson_error_t error; if (!mongoc_collection_delete_one(collection, filter, NULL, NULL, &error)) { fprintf(stderr, "Delete error: %s\n", error.message); } bson_destroy(filter);
El siguiente ejemplo utiliza la función mongoc_collection_delete_one() para remover un documento en la colección restaurants que tiene un valor de name de "Ready Penny Inn":
bson_t *filter = BCON_NEW("name", BCON_UTF8("Ready Penny Inn")); bson_error_t error; if (!mongoc_collection_delete_one(collection, filter, NULL, NULL, &error)) { printf("Delete error: %s\n", error.message); } bson_destroy(filter);
Borra varios documentos
Utilice la siguiente sintaxis para eliminar varios documentos:
bson_t *filter = BCON_NEW("<field name>", BCON_UTF8("<value>")); bson_error_t error; if (!mongoc_collection_delete_many(collection, filter, NULL, NULL, &error)) { fprintf(stderr, "Delete error: %s\n", error.message); } bson_destroy(filter);
El siguiente ejemplo utiliza la función mongoc_collection_delete_many() para eliminar todos los documentos de la colección restaurants que tengan un valor borough de "Brooklyn":
bson_t *filter = BCON_NEW("borough", BCON_UTF8("Brooklyn")); bson_error_t error; if (!mongoc_collection_delete_many(collection, filter, NULL, NULL, &error)) { printf("Delete error: %s\n", error.message); } bson_destroy(filter);
Personalizar la operación de eliminación
Puede modificar el comportamiento de las funciones mongoc_collection_delete_one() y mongoc_collection_delete_many() pasando un documento BSON que especifique los valores de las opciones. La siguiente tabla describe algunas opciones que puede configurar en el documento:
Campo | Descripción |
|---|---|
| Specifies the kind of language collation to use when comparing
text. For more information, see Collation
in the MongoDB Server manual. Type: bson_t |
| Sets the write concern for the operation. Defaults to the write concern of the namespace. Type: mongoc_write_concern_t |
| 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. Type: bson_t |
| A comment to attach to the operation. For more information, see the insert command
fields guide in the
MongoDB Server manual. Type: bson_value_t |
El siguiente ejemplo llama a la función mongoc_collection_delete_many() para eliminar todos los documentos de la colección restaurants que tengan un valor name que contenga la cadena "Mongo". También establece la opción comment para añadir un comentario a la operación:
bson_t *filter = BCON_NEW("name", "{", "$regex", BCON_UTF8("Mongo"), "}"); bson_error_t error; bson_t opts; bson_init(&opts); BCON_APPEND(&opts, "comment", BCON_UTF8("Deleting Mongo restaurants")); if (!mongoc_collection_delete_many(collection, filter, &opts, NULL, &error)) { printf("Delete error: %s\n", error.message); } bson_destroy(filter); bson_destroy(&opts);
Tip
Si utiliza la función mongoc_collection_delete_one() en lugar de mongoc_collection_delete_many() en el ejemplo anterior, el controlador elimina solo el primer documento que tenga un valor name que contenga "Mongo".
Documentación de la API
Para aprender más sobre alguna de las funciones tratadas en esta guía, consulta la siguiente documentación de la API: