Visão geral
Neste guia, você pode aprender como remover documentos com o driver MongoDB Kotlin.
Você pode remover documentos passando um filtro de query para os métodos deleteOne()
, deleteMany()
ou findOneAndDelete()
.
O método deleteOne()
exclui um único documento. Se o filtro de query corresponder a mais de um documento, o método removerá a primeira ocorrência de uma correspondência na collection.
O método deleteMany()
exclui todos os documentos que correspondem ao filtro de query.
O método findOneAndDelete()
localiza e exclui atomicamente a primeira ocorrência de uma correspondência na collection.
Para especificar um agrupamento ou sugerir um índice, use DeleteOptions
como segundo parâmetro para os métodos deleteOne()
e deleteMany()
.
Para especificar um agrupamento, sugerir um índice, especificar a ordem de classificação ou especificar uma projeção no documento retornado, use FindOneAndDeleteOptions
como o segundo parâmetro para o método findOneAndDelete()
.
Dica
Ao excluir um único documento, filtre sua query por um índice único, como um _id
, para garantir que sua query corresponda ao documento que você deseja excluir.
Documentos de amostra
Os exemplos a seguir são sobre uma loja de tintas que vende oito cores diferentes de tinta. A loja tinha sua venda online anual resultando nos seguintes documentos em sua coleção 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 }
Esses dados são modelados com a seguinte classe de dados Kotlin:
data class PaintOrder( val id: Int, val qty: Int, val color: String )
Excluir muitos documentos
O site da loja de tintas exibe todos os documento na collection paint_inventory
. Para reduzir a confusão do cliente, a loja deseja remover as cores que estão esgotadas.
Para remover as cores esgotadas, faça query da collection paint_inventory
onde qty
é 0
e passe a query para o método deleteMany()
:
val filter = Filters.eq("qty", 0) collection.deleteMany(filter)
O seguinte mostra o documento restante na collection 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 }
Excluir um documento
A loja está doando a quantidade restante de sua tinta amarela. Isso significa que o qty
para o amarelo agora é 0
e precisamos remover o amarelo da collection.
Para remover o amarelo, execute uma consulta na coleção paint_inventory
onde color
seja "yellow"
e utilize essa consulta no método deleteOne()
:
val filter = Filters.eq("color", "yellow") collection.deleteOne(filter)
O seguinte mostra o documento restante na collection paint_inventory
:
{ "_id": 1, "color": "red", "qty": 5 } { "_id": 2, "color": "purple", "qty": 8 } { "_id": 8, "color": "black", "qty": 8 }
Localize e exclua um documento
A loja gostaria de distribuir a quantidade restante de tinta púrpura e remover a cor púrpura da collection paint_inventory
.
Para escolher uma cor, faça query da collection paint_inventory
onde color
é "purple"
e passe a query para o método findOneAndDelete()
. Ao contrário dos outros métodos de exclusão, o findOneAndDelete()
retorna o documento excluído:
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)
Observação
Se não houver nenhuma correspondência com seu filtro de query, nenhum documento será excluído e o método retornará null
.
O seguinte mostra o documento restante na collection paint_inventory
:
{ "_id": 1, "color": "red", "qty": 5 } { "_id": 8, "color": "black", "qty": 8 }
Para obter mais informações sobre os métodos e classes mencionadas neste guia, consulte os seguintes recursos:
db.coleção.deleteOne() MongoDB Entrada manual do servidor
db.coleção.deleteMany() MongoDB Entrada manual do servidor
db.coleção.findOneAndDelete() MongoDB Entrada manual do servidor