Para agentes de IA: hay un índice de documentación disponible en https://www.mongodb.com/es/docs/llms.txt — versiones en markdown de todas las páginas están disponibles agregando .md a cualquier ruta URL.
Docs Menu

Delete Documents

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 son utilizados por el ejemplo de operación de borrado

  • Borrar operaciones describe cómo utilizar el driver para ejecutar operaciones de borrado

  • Borrar 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

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 }

El driver de Rust proporciona los métodos delete_one() y delete_many() para realizar operaciones de borrar.

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.

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

collation

La intercalación que se utilizará al ordenar los resultados. Para obtener más información sobre las intercalaciones, consulte la guía Intercalación.

Tipo: Collation
Por defecto: None

write_concern

El nivel de confirmación de escritura (write concern) para la operación. Si no establece esta opción, la operación hereda el nivel de confirmación de escritura (write concern) establecido para la colección. Para obtener más información sobre el nivel de confirmación de escritura (write concern), consulta Nivel de confirmación de escritura (write concern) en el manual del servidor.

Tipo: WriteConcern

hint

El índice que se utilizará para la operación. Para obtener más información sobre los índices, consulte Índices en el manual del servidor. Esta opción solo está disponible cuando se conecta a MongoDB Server versiones 4.4 y posteriores.

Tipo: Hint
Por defecto: None

let_vars

Un mapa de parámetros y valores. Se puede acceder a estos parámetros como variables en las expresiones de agregación. Esta opción solo está disponible cuando se conecta a las versiones 5.0 y posteriores de MongoDB Server.

Tipo: Document

comment

Un valor Bson arbitrario vinculado a la operación para rastrearlo a través del perfilador de base de datos, currentOp y los registros. Esta opción solo está disponible cuando se conecta a MongoDB Server versiones 4.4 y posteriores.

Tipo: Bson
Por defecto: None

El siguiente código muestra cómo establecer el campo comment mediante el encadenamiento del método comment() al método delete_one():

let res = my_coll
.delete_one(filter)
.comment(bson!("hello!"))
.await?;

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.

Esta sección proporciona ejemplos de código para las siguientes operaciones de eliminación:

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

Este ejemplo borra un documento que coincide con un filtro de query de la colección restaurants en la base de datos sample_restaurants. El método delete_one() elimina el primer documento en el que el valor del campo name es "Haagen-Dazs" y el campo borough es "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 estructura Restaurant, definida en la parte superior del código

Selecciona la pestaña Asynchronous o Synchronous para ver el código correspondiente para cada runtime:

use mongodb::{
bson::{ Document, doc },
Client,
Collection
};
use serde::{ Deserialize, Serialize };
#[derive(Serialize, Deserialize, Debug)]
struct Restaurant {
name: String,
borough: String,
}
#[tokio::main]
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 };
#[derive(Serialize, Deserialize, Debug)]
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

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 de category es "garden"

  • Encadena el método hint() a delete_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 driver solo borrará el primero de los dos documentos que coincidan con el filtro de query.

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 estructura Restaurant, definida en la parte superior del código

Selecciona la pestaña Asynchronous o Synchronous para ver el código correspondiente para cada runtime:

use mongodb::{
bson::{ Document, doc },
Client,
Collection
};
use serde::{ Deserialize, Serialize };
#[derive(Debug, Serialize, Deserialize)]
struct Address {
street: String,
city: String,
}
#[derive(Serialize, Deserialize, Debug)]
struct Restaurant {
name: String,
borough: String,
address: Address,
}
#[tokio::main]
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 };
#[derive(Debug, Serialize, Deserialize)]
struct Address {
street: String,
city: String,
}
#[derive(Serialize, Deserialize, Debug)]
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

Para obtener más información sobre las operaciones en esta guía, consulte la siguiente documentación:

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: