Exclua documentos
Nesta página
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:
deleteOne() Documentação da API
deleteMany() Documentação da API
findOneAndDelete() Documentação da API
FindOneAndDeleteOptions Documentação da API
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