Exclua documentos
Nesta página
Visão geral
Neste guia, você pode aprender como usar o driver Scala para remover documentos de uma coleção MongoDB executando operações de exclusão.
Uma operação de exclusão remove um ou mais documentos de uma collection do MongoDB. Você pode executar uma operação de exclusão utilizando os métodos deleteOne()
ou deleteMany()
.
Dados de amostra
Os exemplos neste guia utilizam a restaurants
coleção do sample_restaurants
no banco de dados do a partir dos conjuntos de dados de amostra do Atlas . Para acessar essa collection a partir do seu aplicação Scala, crie um MongoClient
que se conecte a um Atlas cluster e atribua os seguintes valores às suas variáveis database
collection
e:
val database: MongoDatabase = mongoClient.getDatabase("sample_restaurants") val collection: MongoCollection[Document] = database.getCollection("restaurants")
Para saber como criar um cluster MongoDB Atlas gratuito e carregar os conjuntos de dados de amostra, consulte o guia Iniciar com Atlas .
Excluir operações
Você pode executar operações de exclusão no MongoDB usando os seguintes métodos:
deleteOne()
, que exclui o primeiro documento que corresponde aos critérios do Atlas SearchdeleteMany()
, que exclui todos os documentos que correspondem aos critérios do Atlas Search
Cada método de exclusão requer um query filtro documento, que especifica os critérios de pesquisa que determinam quais documentos selecionar para remoção. Para saber mais sobre filtros de query, consulte o guia Especificar uma query .
Excluir um documento
O exemplo a seguir usa o método deleteOne()
para remover um documento no qual o valor do campo name
é "Happy Garden"
:
val filter = equal("name", "Happy Garden") val observable: Observable[DeleteResult] = collection.deleteOne(filter) observable.subscribe(new Observer[DeleteResult] { override def onNext(result: DeleteResult): Unit = println(s"Deleted document count: ${result.getDeletedCount}") override def onError(e: Throwable): Unit = println(s"Error: $e") override def onComplete(): Unit = println("Completed") })
Deleted document count: 1 Completed
Excluir vários documentos
O exemplo a seguir usa o método deleteMany()
para remover todos os documentos nos quais o valor do campo borough
é "Brooklyn"
e o valor do campo name
é "Starbucks"
:
val filter = and( equal("borough", "Brooklyn"), equal("name", "Starbucks") ) val observable: Observable[DeleteResult] = collection.deleteMany(filter) observable.subscribe(new Observer[DeleteResult] { override def onNext(result: DeleteResult): Unit = println(s"Deleted document count: ${result.getDeletedCount}") override def onError(e: Throwable): Unit = println(s"Error: $e") override def onComplete(): Unit = println("Completed") })
Deleted document count: 3 Completed
Personalizar a operação de exclusão
Os métodos deleteOne()
e deleteMany()
aceitam opcionalmente um parâmetro DeleteOptions
, que representa as opções que você pode usar para configurar a operação de exclusão. Se você não especificar nenhuma opção, o driver executará a operação de exclusão com as configurações padrão.
A tabela a seguir descreve os métodos de configuração que você pode usar para configurar uma instância DeleteOptions
:
Método | Descrição |
---|---|
| Specifies the kind of language collation to use when sorting
results. For more information, see Collation
in the MongoDB Server manual. |
| Specifies the index to use when matching documents.
For more information, see the hint
option in the delete reference page of the MongoDB Server manual. |
| Specifies the index as a string to use when matching documents.
For more information, see the hint
option in the `` delete`` reference page of the MongoDB Server manual. |
| Provides a map of parameter names and values to set top-level
variables for the operation. Values must be constant or closed
expressions that don't reference document fields. For more information,
see the let option in the delete
reference page of the MongoDB Server manual. |
| Sets a comment to attach to the operation. For more
information, see the Command
Fields section in the delete
reference page of the MongoDB Server manual. |
Exemplo de modificação de exclusão
O código a seguir cria opções e usa o método comment()
para adicionar um comentário à operação de exclusão. Em seguida, o exemplo usa o método deleteMany()
para excluir todos os documentos na collection restaurants
na qual o valor do campo name
inclui a string "Red"
.
val filter = regex("name", "Red") val opts = DeleteOptions().comment("sample comment") val observable = collection.deleteMany(filter, opts) observable.subscribe(new Observer[DeleteResult] { override def onNext(result: DeleteResult): Unit = println(s"Deleted document count: ${result.getDeletedCount}") override def onError(e: Throwable): Unit = println(s"Error: $e") override def onComplete(): Unit = println("Completed") })
Deleted document count: 124 Completed
Dica
Se você usar o método deleteOne()
no exemplo anterior, em vez do método deleteMany()
, o driver excluirá apenas o primeiro documento que corresponde ao filtro de query.
Valor de retorno
Os métodos deleteOne()
e deleteMany()
retornam uma instância do DeleteResult
. Você pode acessar as seguintes informações de uma instância do DeleteResult
:
deletedCount
, que indica o número de documentos excluídoswasAcknowledged()
, que retornatrue
se o servidor reconhecer o resultado
Se o filtro de query não corresponder a nenhum documento, o driver não excluirá nenhum documento e o valor de deletedCount
será 0
.
Observação
Se o método wasAcknowledged()
retornar false
, tentar acessar a propriedade deletedCount
resultará em uma exceção InvalidOperation
. O driver não pode determinar esses valores se o servidor não reconhecer a operação de gravação.
Documentação da API
Para saber mais sobre qualquer um dos métodos ou tipos discutidos neste guia, consulte a seguinte documentação da API: