Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

Delete Documents

En esta guía, puede aprender cómo eliminar documentos con el controlador Java de MongoDB.

Puedes remover documentos pasando un filtro de query a la deleteOne(), métodos deleteMany() o findOneAndDelete().

El método deleteOne() elimina un solo documento. Si el filtro de consulta coincide con más de un documento, el método eliminará la primera coincidencia en la colección.

El método deleteMany() borra todos los documentos que coincidan con el filtro de query.

El método findOneAndDelete() encuentra y elimina de manera atómica la primera aparición de una coincidencia en la colección.

Para especificar una intercalación o sugerir un índice, usa DeleteOptions como segundo parámetro para los métodos deleteOne() y deleteMany().

Para especificar una intercalación, sugerir un índice, especificar el orden de clasificación o especificar una proyección en el documento devuelto, utilice FindOneAndDeleteOptions como segundo parámetro del método findOneAndDelete().

Los siguientes ejemplos son sobre una tienda de pinturas que vende ocho colores diferentes de pintura. La tienda tuvo su venta anual en línea, lo que resultó en los siguientes documentos en su colección paint_inventory:

{ "_id": 1, "color": "red", "qty": 5 }
{ "_id": 2, "color": "purple", "qty": 8 }
{ "_id": 3, "color": "blue", "qty": 0 }
{ "_id": 4, "color": "white", "qty": 0 }
{ "_id": 5, "color": "yellow", "qty": 6 }
{ "_id": 6, "color": "pink", "qty": 0 }
{ "_id": 7, "color": "green", "qty": 0 }
{ "_id": 8, "color": "black", "qty": 8 }

El sitio web de la tienda de pinturas muestra todos los documentos en la colección paint_inventory. Para reducir la confusión de los clientes, la tienda quiere remover los colores que están agotados.

Para remover los colores agotados, query la colección paint_inventory donde el qty es 0 y pasa la query al método deleteMany():

Bson filter = Filters.eq("qty", 0);
collection.deleteMany(filter);

A continuación se muestran los documentos que quedan en la colección paint_inventory:

{ "_id": 1, "color": "red", "qty": 5 }
{ "_id": 2, "color": "purple", "qty": 8 }
{ "_id": 5, "color": "yellow", "qty": 6 }
{ "_id": 8, "color": "black", "qty": 8 }

La tienda está donando la cantidad restante de pintura amarilla. Esto significa que el qty para el amarillo ahora es 0 y debemos retirar el amarillo de la colección.

Para eliminar el amarillo, consulte la colección paint_inventory donde color es "yellow" y pase la consulta al método deleteOne():

Bson filter = Filters.eq("color", "yellow");
collection.deleteOne(filter);

A continuación se muestran los documentos que quedan en la colección paint_inventory:

{ "_id": 1, "color": "red", "qty": 5 }
{ "_id": 2, "color": "purple", "qty": 8 }
{ "_id": 8, "color": "black", "qty": 8 }

Al almacenar le gustaría rifar la cantidad restante de pintura morada y remover el color morado de la colección paint_inventory.

Para elegir un color, consulte la colección paint_inventory donde color es "purple" y pase la consulta al método findOneAndDelete():

Bson filter = Filters.eq("color", "purple");
System.out.println(collection.findOneAndDelete(filter).toJson());

A diferencia de los otros métodos de borrar, findOneAndDelete() devuelve el documento eliminado:

{ "_id": 2, "color": "purple", "qty": 8 }

Nota

Si no hay coincidencias con el filtro de query, no se borra ningún documento y el método retorna null.

A continuación se muestran los documentos que quedan en la colección paint_inventory:

{ "_id": 1, "color": "red", "qty": 5 }
{ "_id": 8, "color": "black", "qty": 8 }

Nota

Configuración de ejemplo

Este ejemplo se conecta a una instancia de MongoDB utilizando un URI de conexión. Para obtener más información sobre cómo conectarse a tu instancia de MongoDB, consulta el Crea un MongoClient guía. Este ejemplo también utiliza la colección movies en la base de datos sample_mflix incluida en la Conjuntos de datos de muestra de Atlas. Puede cargarlos en su base de datos en la versión gratuita de MongoDB Atlas siguiendo la guía de introducción de MongoDB.

El siguiente código es un archivo completo y autónomo que ejecuta una operación de eliminación única y una operación de eliminación masiva:

// Deletes documents from a collection by using the Java driver
package org.example;
import static com.mongodb.client.model.Filters.eq;
import org.bson.Document;
import org.bson.conversions.Bson;
import com.mongodb.MongoException;
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.result.DeleteResult;
import static com.mongodb.client.model.Filters.lt;
public class Delete {
public static void main(String[] args) {
// Replace the uri string with your MongoDB deployment's connection string
String uri = "<connection string uri>";
try (MongoClient mongoClient = MongoClients.create(uri)) {
MongoDatabase database = mongoClient.getDatabase("sample_mflix");
MongoCollection<Document> collection = database.getCollection("movies");
Bson deleteOneQuery = eq("title", "The Garbage Pail Kids Movie");
// Deletes the first document that has a "title" value of "The Garbage Pail Kids Movie"
DeleteResult result = collection.deleteOne(deleteOneQuery);
System.out.println("Deleted document count - delete one: " + result.getDeletedCount());
Bson deleteManyQuery = lt("imdb.rating", 1.9);
// Deletes all documents that have an "imdb.rating" value less than 1.9
result = collection.deleteMany(deleteManyQuery);
// Prints the number of deleted documents
System.out.println("Deleted document count - delete many: " + result.getDeletedCount());
}
}
}
Deleted document count - query for one: 1
Deleted document count - unlimited query: 4

Las consultas en estos ejemplos utilizan los filtros eq() y lt() para consultar documentos. Para obtener más información sobre los filtros, consulte la Clase de Filtros Documentación de la API.

Para obtener más información sobre los métodos y clases utilizados para eliminar documentos, consulte la siguiente documentación de API:

Volver

Reemplazar Documentos

En esta página