Exclua documentos
Visão geral
Neste guia, você pode aprender como remover documentos com o driver Java do MongoDB.
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()
.
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 }
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()
:
Bson 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()
:
Bson 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()
:
Bson filter = Filters.eq("color", "purple"); System.out.println(collection.findOneAndDelete(filter).toJson());
Ao contrário dos outros métodos de exclusão, o findOneAndDelete()
retorna o documento excluído:
{ "_id": 2, "color": "purple", "qty": 8 }
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 }
Exemplo de exclusão: arquivo completo
Observação
Exemplo de configuração
Esse exemplo se conecta a uma instância do MongoDB usando um URI de conexão. Para saber mais sobre como se conectar à sua instância do MongoDB , consulte o guia Criar um MongoClient. Este exemplo também utiliza a movies
coleção do no sample_mflix
banco de dados do incluído nos conjuntos de dados de amostra do Atlas do . Você pode carregá-los em seu banco de dados na camada grátis do MongoDB Atlas seguindo o Guia de Introdução ao Atlas .
O código a seguir é um arquivo completo e autônomo que executa uma operação de exclusão e uma operação de exclusão:
// 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
As queries nesses exemplos usam os filtros eq()
e lt()
para consultar documentos. Para obter mais informações sobre filtros, consulte a documentação da API daClasse de filtros.
Informações adicionais
Documentação da API
Para obter mais informações sobre os métodos e classes usadas para excluir documentos, consulte a seguinte documentação da API: