Overview
En esta guía, puedes aprender cómo remover documentos de tus colecciones de MongoDB utilizando operaciones de borrar.
Esta guía incluye las siguientes secciones:
Datos de muestra para ejemplos presenta los datos de muestra que se utilizan en el ejemplo de operación de eliminación
Borrar operaciones describe cómo utilizar el driver para ejecutar operaciones de borrado
Eliminar ejemplos proporciona ejemplos de código para las operaciones de eliminación
Información adicional proporciona enlaces a recursos y documentación de la API para los tipos y métodos mencionados en esta guía
Datos de muestra para ejemplos
El ejemplo de esta guía utiliza los siguientes documentos de muestra. Cada documento representa un artículo en el inventario de una tienda y contiene información sobre su categorización y precio unitario:
{ "item": "trowel", "category": "garden", "unit_price": 9.89 }, { "item": "placemat", "category": "kitchen", "unit_price": 3.19 }, { "item": "watering can", "category": "garden", "unit_price": 11.99 }
Operaciones de borrar
El driver Rust proporciona el delete_one() y delete_many() métodos para realizar operaciones de eliminación.
Parámetros
Los métodos delete_one() y delete_many() reciben un filtro de query como parámetro. Un filtro de query está formado por los campos y valores que constituyen los criterios para que los documentos coincidan.
opciones
Puedes modificar el comportamiento de los métodos de operación de borrado encadenando los métodos del desarrollador de opciones a delete_one() y delete_many(). Estos métodos de opciones establecen campos en la estructura DeleteOptions.
Nota
Opciones de configuración
Puedes establecer los campos de DeleteOptions encadenando directamente los métodos del generador de opciones a la llamada del método de eliminación. Si está utilizando una versión anterior del controlador, debe construir una instancia de DeleteOptions encadenando los métodos del generador de opciones al método builder(). A continuación, pasa la instancia de opciones como parámetro a delete_one() o delete_many().
La siguiente tabla describe las opciones disponibles en DeleteOptions:
Opción | Descripción |
|---|---|
| The collation to use when sorting results. To learn more about collations,
see the Collations guide. Type: CollationDefault: None |
| The write concern for the operation. If you don't set this
option, the operation inherits the write concern set for
the collection. To learn more about write concerns, see
Write Concern in the
Server manual. Type: WriteConcern |
| The index to use for the operation. To learn more about
indexes, see Indexes in the Server
manual. This option is available only when connecting to
MongoDB Server versions 4.4 and later. Type: HintDefault: None |
| A map of parameters and values. These parameters can be accessed
as variables in aggregation expressions. This option is available
only when connecting to MongoDB Server versions 5.0 and later. Type: Document |
| An arbitrary Bson value tied to the operation to trace
it through the database profiler, currentOp, and
logs. This option is available only when connecting to
MongoDB Server versions 4.4 and later.Type: BsonDefault: None |
El siguiente código muestra cómo establecer el campo comment encadenando el método comment() al método delete_one():
let res = my_coll .delete_one(filter) .comment(bson!("hello!")) .await?;
Valor de retorno
Los métodos delete_one() y delete_many() devuelven un tipo DeleteResult. Este tipo contiene la propiedad deleted_count que describe la cantidad de documentos eliminados. Si ningún documento coincide con el filtro de query que especificaste, la operación de borrado no remueve ningún documento y el valor de deleted_count es 0.
Borrar ejemplos
Esta sección proporciona ejemplos de código para las siguientes operaciones de eliminación:
Borrar un ejemplo
El siguiente ejemplo utiliza el método delete_one() para borrar un documento que tiene un valor de item igual a "placemat":
let filter = doc! { "item": "placemat" }; let res = my_coll.delete_one(filter).await?; println!("Deleted documents: {}", res.deleted_count);
Deleted documents: 1
Ejemplo de archivo completo: Eliminar un documento
Este ejemplo elimina un documento que coincide con un filtro de consulta de la colección restaurants en la base de datos sample_restaurants. El método delete_one() elimina el primer documento cuyo valor del campo name sea "Haagen-Dazs" y el del campo borough sea "Brooklyn".
Se puede acceder a los documentos en la colección restaurants como instancias del tipo Document o de un tipo de datos personalizado. Para especificar el tipo de dato que representa la colección de datos, reemplaza el parámetro de tipo <T> en la línea resaltada con uno de los siguientes valores:
<Document>: Accede a documentos de la colección como documentos BSON<Restaurant>: Accede a documentos de la colección como instancias de la estructuraRestaurant, definida en la parte superior del código
Selecciona el Asynchronous o la pestaña Synchronous para ver el código correspondiente para cada entorno de ejecución:
use mongodb::{ bson::{ Document, doc }, Client, Collection }; use serde::{ Deserialize, Serialize }; struct Restaurant { name: String, borough: String, } async fn main() -> mongodb::error::Result<()> { let uri = "<connection string>"; let client = Client::with_uri_str(uri).await?; // Replace <T> with the <Document> or <Restaurant> type parameter let my_coll: Collection<T> = client .database("sample_restaurants") .collection("restaurants"); let filter = doc! { "$and": [ doc! { "name": "Haagen-Dazs" }, doc! { "borough": "Brooklyn" } ] }; let result = my_coll.delete_one(filter).await?; println!("Deleted documents: {}", result.deleted_count); Ok(()) }
Deleted documents: 1
use mongodb::{ bson::{ Document, doc }, sync::{ Client, Collection } }; use serde::{ Deserialize, Serialize }; struct Restaurant { name: String, borough: String, } fn main() -> mongodb::error::Result<()> { let uri = "<connection string>"; let client = Client::with_uri_str(uri)?; // Replace <T> with the <Document> or <Restaurant> type parameter let my_coll: Collection<T> = client .database("sample_restaurants") .collection("restaurants"); let filter = doc! { "$and": [ doc! { "name": "Haagen-Dazs" }, doc! { "borough": "Brooklyn" } ] }; let result = my_coll.delete_one(filter).run()?; println!("Deleted documents: {}", result.deleted_count); Ok(()) }
Deleted documents: 1
Borrar varios ejemplo
Este ejemplo realiza las siguientes acciones:
Llama al método
delete_many()Pasa un filtro de query a
delete_many()que coincide con los documentos donde el valor decategoryes"garden"Encadena el método
hint()adelete_many()para utilizar el índice_id_como referencia para la operación de borrado
let filter = doc! { "category": "garden" }; let hint = Hint::Name("_id_".to_string()); let res = my_coll .delete_many(filter) .hint(hint) .await?; println!("Deleted documents: {}", res.deleted_count);
Deleted documents: 2
Nota
Si utiliza el método delete_one() en lugar de delete_many() en el ejemplo de código anterior, el controlador elimina solo el primero de los dos documentos que coinciden con el filtro de consulta.
Ejemplo de archivo completo: Eliminar varios documentos
Este ejemplo elimina todos los documentos que coinciden con un filtro de query de la colección restaurants en la base de datos sample_restaurants. El método delete_many() elimina documentos en los que el valor del campo borough es "Manhattan" y el valor del campo address.street es "Broadway".
Se puede acceder a los documentos en la colección restaurants como instancias del tipo Document o de un tipo de datos personalizado. Para especificar el tipo de dato que representa la colección de datos, reemplaza el parámetro de tipo <T> en la línea resaltada con uno de los siguientes valores:
<Document>: Accede a documentos de la colección como documentos BSON<Restaurant>: Accede a documentos de la colección como instancias de la estructuraRestaurant, definida en la parte superior del código
Seleccione la pestaña Asynchronous o Synchronous para ver el código correspondiente para cada tiempo de ejecución:
use mongodb::{ bson::{ Document, doc }, Client, Collection }; use serde::{ Deserialize, Serialize }; struct Address { street: String, city: String, } struct Restaurant { name: String, borough: String, address: Address, } async fn main() -> mongodb::error::Result<()> { let uri = "<connection string>"; let client = Client::with_uri_str(uri).await?; // Replace <T> with the <Document> or <Restaurant> type parameter let my_coll: Collection<T> = client .database("sample_restaurants") .collection("restaurants"); let filter = doc! { "$and": [ doc! { "borough": "Manhattan" }, doc! { "address.street": "Broadway" } ] }; let result = my_coll.delete_many(filter).await?; println!("Deleted documents: {}", result.deleted_count); Ok(()) }
// Your values might differ Deleted documents: 615
use mongodb::{ bson::{ Document, doc }, sync::{ Client, Collection } }; use serde::{ Deserialize, Serialize }; struct Address { street: String, city: String, } struct Restaurant { name: String, borough: String, address: Address, } fn main() -> mongodb::error::Result<()> { let uri = "<connection string>"; let client = Client::with_uri_str(uri)?; // Replace <T> with the <Document> or <Restaurant> type parameter let my_coll: Collection<T> = client .database("sample_restaurants") .collection("restaurants"); let filter = doc! { "$and": [ doc! { "borough": "Manhattan" }, doc! { "address.street": "Broadway" } ] }; let result = my_coll.delete_many(filter).run()?; println!("Deleted documents: {}", result.deleted_count); Ok(()) }
// Your values might differ Deleted documents: 615
Información Adicional
Para obtener más información sobre las operaciones de esta guía, consulte la siguiente documentación:
intercalación guide
Documentación de la API
Para obtener más información sobre los métodos y tipos mencionados en esta guía, vea la siguiente documentación de la API: