Overview
En esta guía, puedes aprender cómo remover documentos de tus colecciones de MongoDB usando operaciones de borrar.
Datos de muestra
Los ejemplos de esta guía utilizan el restaurants Colección de la base de datos sample_restaurants. Los documentos de esta colección utilizan las siguientes clases Restaurant, Address y GradeEntry como modelos:
public class Restaurant { public ObjectId Id { get; set; } public string Name { get; set; } [] public string RestaurantId { get; set; } public string Cuisine { get; set; } public Address Address { get; set; } public string Borough { get; set; } public List<GradeEntry> Grades { get; set; } }
public class Address { public string Building { get; set; } [] public double[] Coordinates { get; set; } public string Street { get; set; } [] public string ZipCode { get; set; } }
public class GradeEntry { public DateTime Date { get; set; } public string Grade { get; set; } public float? Score { get; set; } }
Nota
Los documentos de la colección restaurants utilizan la convención de nomenclatura snake-case. Los ejemplos de esta guía utilizan un ConventionPack para deserializar los campos de la colección en notación Pascal y asignarlos a las propiedades de la clase Restaurant.
Para obtener más información sobre la serialización personalizada, consulte Serialización personalizada.
Esta colección es de la Conjuntos de datos de muestra proporcionados por Atlas. Consulte Introducción al controlador .NET/C# para aprender a crear un clúster gratuito de MongoDB y cargar estos datos de muestra.
Operaciones de borrar
Utilice operaciones de eliminación para eliminar documentos que coincidan con un filtro de consulta. El filtro de consulta determina qué registros se seleccionan para su eliminación según los criterios del documento del filtro de consulta. Puede realizar operaciones de eliminación en MongoDB con los siguientes métodos:
DeleteOne(), que elimina el primer documento que coincide con el filtro de consultaDeleteMany(), que elimina todos los documentos que coinciden con el filtro de consulta
Borrar un documento
El siguiente código muestra cómo utilizar el método sincrónico DeleteOne() o el método asincrónico DeleteOneAsync() para eliminar un documento.
var result = _restaurantsCollection.DeleteOne(filter);
var result = await _restaurantsCollection.DeleteOneAsync(filter);
Borra varios documentos
El siguiente código muestra cómo utilizar el método sincrónico DeleteMany() o el método asincrónico DeleteManyAsync() para eliminar todos los documentos coincidentes.
var result = _restaurantsCollection.DeleteMany(filter);
var result = await _restaurantsCollection.DeleteManyAsync(filter);
Tip
Encuentra ejemplos ejecutables utilizando estos métodos en información adicional.
Parámetros
Los DeleteOne() DeleteMany() métodos y requieren un filtro de consulta que especifique los documentos que se deben buscar. Encontrará más información sobre cómo construir un filtro de consulta en el tutorial "Consultar documentos".
Ambos métodos aceptan opcionalmente un tipo DeleteOptions como parámetro adicional, que representa las opciones que se pueden usar para configurar la operación de eliminación. Si no se especifica ninguna propiedad DeleteOptions, el controlador no personaliza la operación de eliminación.
El tipo DeleteOptions le permite configurar opciones con las siguientes propiedades:
Propiedad | Descripción |
|---|---|
| Gets or sets the type of language collation to use when sorting
results. See the Collation section of this page for more
information. |
| Gets or sets the comment for the operation. See the delete command
fields
for more information. |
| Gets or sets the index to use to scan for documents. See the delete
statements
for more information. |
| Gets or sets the let document. See the delete command
fields
for more information. |
Intercalación
Para configurar la intercalación para tu operación, crea una instancia de la clase intercalación.
La siguiente tabla describe los parámetros que acepta el constructor Collation. También enumera la propiedad de clase correspondiente que se puede usar para leer el valor de cada configuración.
Parameter | Descripción | Propiedad de clase |
|---|---|---|
| Specifies the International Components for Unicode (ICU) locale. For a list of
supported locales,
see Collation Locales and Default Parameters
in the MongoDB Server Manual. If you want to use simple binary comparison, use the Collation.Simple static
property to return a Collation object with the locale set to "simple".Data Type: string |
|
| (Optional) Specifies whether to include case comparison. When this argument is true, the driver's behavior depends on the value of
the strength argument:- If strength is CollationStrength.Primary, the driver compares base
characters and case.- If strength is CollationStrength.Secondary, the driver compares base
characters, diacritics, other secondary differences, and case.- If strength is any other value, this argument is ignored.When this argument is false, the driver doesn't include case comparison at
strength level Primary or Secondary.Data Type: booleanDefault: false |
|
| (Optional) Specifies the sort order of case differences during tertiary level comparisons. Data Type: CollationCaseFirst Default: CollationCaseFirst.Off |
|
| (Optional) Specifies the level of comparison to perform, as defined in the
ICU documentation. Data Type: CollationStrength Default: CollationStrength.Tertiary |
|
| (Optional) Specifies whether the driver compares numeric strings as numbers. If this argument is true, the driver compares numeric strings as numbers.
For example, when comparing the strings "10" and "2", the driver treats the values
as 10 and 2, and finds 10 to be greater.If this argument is false or excluded, the driver compares numeric strings
as strings. For example, when comparing the strings "10" and "2", the driver
compares one character at a time. Because "1" is less than "2", the driver finds
"10" to be less than "2".For more information, see Collation Restrictions
in the MongoDB Server manual. Data Type: booleanDefault: false |
|
| (Optional) Specifies whether the driver considers whitespace and punctuation as base
characters for purposes of comparison. Data Type: CollationAlternate Default: CollationAlternate.NonIgnorable (spaces and punctuation are
considered base characters) |
|
| (Optional) Specifies which characters the driver considers ignorable when
the alternate argument is CollationAlternate.Shifted.Data Type: CollationMaxVariable Default: CollationMaxVariable.Punctuation (the driver ignores punctuation
and spaces) |
|
| (Optional) Specifies whether the driver normalizes text as needed. Most text doesn't require normalization. For more information about
normalization, see the ICU documentation. Data Type: booleanDefault: false |
|
| (Optional) Specifies whether strings containing diacritics sort from the back of the string
to the front. Data Type: booleanDefault: false |
|
Más información sobre la intercalación en la página Intercalación en el manual de MongoDB Server.
Ejemplo
El siguiente código utiliza el método DeleteMany() para buscar en el índice "borough_1" y eliminar todos los documentos donde el valor del campo address.street incluye la frase "Pearl Street":
var filter = Builders<Restaurant>.Filter .Regex("address.street", "Pearl Street"); DeleteOptions opts = new DeleteOptions { Hint = "borough_1" }; Console.WriteLine("Deleting documents..."); var result = _restaurantsCollection.DeleteMany(filter, opts); Console.WriteLine($"Deleted documents: {result.DeletedCount}"); Console.WriteLine($"Result acknowledged? {result.IsAcknowledged}");
Deleting documents... Deleted documents: 26 Result acknowledged? True
Tip
Si en el ejemplo anterior se utilizara el método DeleteOne() en lugar de DeleteMany(), el controlador eliminaría el primero de los 26 documentos coincidentes.
Valor de retorno
Los métodos DeleteOne() y DeleteMany() devuelven un tipo DeleteResult. Este tipo contiene la propiedad DeletedCount, que indica el número de documentos eliminados, y la propiedad IsAcknowledged, que indica si se reconoce el resultado. Si el filtro de consulta no coincide con ningún documento, no se elimina ningún documento y DeletedCount es 0.
Información Adicional
Para obtener ejemplos ejecutables de operaciones de eliminación, consulte los siguientes ejemplos de uso:
Documentación de la API
Para obtener más información sobre cualquiera de los métodos o tipos discutidos en esta guía, consultar la siguiente documentación de la API: