Exclua documentos
Nesta página
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 }
Delete Example: Full File
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 Como criar um MongoClient. Este exemplo também utiliza a coleção do movies
no banco de dados do sample_mflix
incluído nos conjuntos de dados de amostra do Atlas. Você pode carregá-los em seu banco de dados na camada grátis do MongoDB Atlas seguindo o Guia de Introdução ao Atlas.
The following code is a complete, standalone file that performs a delete one operation and a delete many operation:
// 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
The queries in these examples use the eq()
and lt()
filters to query documents. For more
information about filters, see the Filters Class
API documentation.
Informações adicionais
Documentação da API
For more information about the methods and classes used to delete documents, see the following API documentation: