Overview
En esta guía, puede aprender cómo eliminar documentos con el controlador MongoDB Kotlin.
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().
Tip
Al eliminar un solo documento, filtre su consulta por un índice único, como _id, para asegurarse de que su consulta coincida con el documento que desea eliminar.
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 }
Estos datos se modelan con la siguiente clase de datos Kotlin:
data class PaintOrder( val id: Int, val qty: Int, val color: String )
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():
val 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():
val 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 seleccionar un color, consulta la colección paint_inventory donde color es "purple" y pasa la consulta al método findOneAndDelete(). A diferencia de los demás métodos de eliminación, findOneAndDelete() devuelve el documento eliminado:
val filter = Filters.eq("color", "purple") val result = collection.findOneAndDelete(filter) println("The following was deleted: $result")
The following was deleted: PaintOrder(id=2, qty=8, color=purple)
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 }
Para obtener más información sobre los métodos y clases mencionados en esta guía, consulte los siguientes recursos:
deleteOne() Documentación de la API
Documentación de la APIdeleteMany()
Documentación de la APIfindOneAndDelete()
Documentación dela API de DeleteOptions
Documentación de la API deFindOneAndDeleteOptions
Entrada manual del servidordb.collection.deleteOne()
Entrada manual del servidordb.collection.deleteMany()
Entrada manual del servidordb.collection.findOneAndDelete()