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 usa a coleção movies no banco de dados sample_mflix incluído nos conjuntos de dados de amostra do Atlas. Você pode carregá-los em seu banco de dados em um cluster gratuito no MongoDB Atlas seguindo o MongoDB Get Started.
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()); } }}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 de classe 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: