Overview
En esta guía, puede aprender cómo eliminar documentos con el controlador Java de MongoDB.
Puede eliminar documentos pasando un filtro de consulta 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() elimina todos los documentos que coinciden con el filtro de consulta.
El método findOneAndDelete() encuentra y elimina atómicamente la primera aparición de una coincidencia en la colección.
Para especificar una intercalación o sugerir un índice, utilice DeleteOptions como segundo parámetro para los métodos deleteOne() y deleteMany().
Para especificar una intercalación, sugerir un índice, especificar un orden de clasificación o especificar una proyección en el documento devuelto, utilice FindOneAndDeleteOptions como el segundo parámetro del método findOneAndDelete().
Documentos de muestra
Los siguientes ejemplos tratan sobre una tienda de pinturas que vende ocho colores diferentes. La tienda realizó 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 }
Borrar muchos documentos
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 eliminar los colores fuera de stock, consulte la colección paint_inventory donde qty es 0 y pase la consulta 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 }
Eliminar un documento
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 }
Buscar y eliminar un documento
A la tienda le gustaría sortear la cantidad restante de pintura violeta y eliminar el violeta 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 eliminación, 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 }
Ejemplo de eliminación: archivo completo
Nota
Configuración de ejemplo
Este ejemplo se conecta a una instancia de MongoDB mediante una URI de conexión. Para obtener más información sobre cómo conectarse a su instancia de MongoDB, consulte Cree una guía de MongoClient. Este ejemplo también utiliza la movies colección en la sample_mflix base de datos incluida en el 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 e independiente que realiza una operación de eliminación de una vez y una operación de eliminación de varias veces:
// 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 de estos ejemplos utilizan los eq() lt() filtros y para consultar documentos. Para más información sobre los filtros, consulte la clase "Filtros".
Documentación de la API.
Información Adicional
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: