MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

4 maneiras de excluir um documento no MongoDB


No MongoDB, se você precisar excluir um documento no shell do mongo, você pode usar:
  • O db.collection.remove() método
  • A delete comando
  • O db.collection.deleteOne() método
  • O db.collection.deleteMany() método

Este artigo fornece exemplos de cada um.

O db.collection.remove() Método


O db.collection.remove() O método remove (ou seja, exclui) documentos de uma coleção. Você pode excluir todos os documentos, alguns documentos ou um único documento conforme necessário.

Aqui está um exemplo de exclusão de um documento específico.
db.employees.remove({ "_id": 3 })

Resultado:
WriteResult({ "nRemoved" : 1 })

Isso exclui o documento com um _id valor de 3 dos employees coleção.

No entanto, não precisa corresponder a um único documento. Os critérios de filtro podem corresponder a vários documentos e você pode até deixar os critérios de filtro em branco para corresponder a todos os documentos (ou seja, excluir todos os documentos).

Aqui está um exemplo de exclusão de todos os documentos:
db.employees.remove({})

Resultado:
WriteResult({ "nRemoved" : 5 })

O resultado nos mostra que cinco documentos foram removidos (portanto, a coleção obviamente continha cinco documentos antes de excluirmos todos).

O remove() O método também aceita um justOne parâmetro para limitar a remoção a apenas um documento. Isso exclui o primeiro documento que corresponde aos critérios de exclusão.

Exemplo:
db.employees.remove({}, "justOne: true")

Resultado:
WriteResult({ "nRemoved" : 1 })

Nesse caso, nosso critério de filtro é um documento vazio e, portanto, corresponde a todos os documentos da coleção. No entanto, apenas um documento é excluído, porque usamos justOne: true .

A delete Comando


O delete comando faz exatamente a mesma coisa que o comando remove() método. Na verdade, o remove() método usa o comando delete.

Aqui está um exemplo de exclusão de um documento específico com o delete comando.
db.runCommand(
   {
      delete: "employees",
      deletes: [ { q: { _id: 4 }, limit: 1 } ]
   }
)

Resultado:
{ "n" : 1, "ok" : 1 }

O db.collection.deleteOne() Método


O db.collection.deleteOne() método é semelhante ao db.collection.remove() método, exceto que ele exclui apenas um documento da coleção especificada.

Ele aceita uma condição de filtro, assim como db.collection.remove() .

Exemplo:
db.employees.deleteOne({ "_id": 4 })

Resultado:
{ "acknowledged" : true, "deletedCount" : 1 }

Este funcionário excluído número 4.

Se você fornecer um filtro mais amplo que retorne vários documentos, ele excluirá apenas o primeiro.

Por exemplo, o seguinte exclui o primeiro documento da coleção, independentemente de quantos documentos estão na coleção:
db.employees.deleteOne({})

O db.collection.deleteOne() pode ser um método útil para usar se você estiver preocupado em excluir acidentalmente vários documentos. A maioria dos documentos que ele excluirá é um, portanto, se você cometer um erro de “dedo gordo”, não removerá acidentalmente todos os documentos da coleção (a menos, é claro, que haja apenas um documento na coleção).

O db.collection.deleteMany() Método


O db.collection.deleteMany() método é semelhante a db.collection.deleteOne() exceto que ele pode excluir vários documentos.

Na verdade, provavelmente é mais como remove() , porque pode remover vários documentos e um único documento (embora não tenha o justOne parâmetro como remove() faz).

Esse método pode ser útil se você quiser excluir todos os documentos que correspondam a um determinado critério.

Exemplo:
db.employees.deleteMany({ "salary": { $gt: 80000 } })

Resultado:
{ "acknowledged" : true, "deletedCount" : 2 }

Isso excluiu todos os documentos que têm um salary campo acima de 80.000. Nesse caso, apenas dois documentos corresponderam, mas poderia ter sido qualquer número.

Você também pode usar db.collection.deleteMany() para excluir todos os documentos da coleção.

Exemplo:
db.employees.deleteMany({})

Resultado:
{ "acknowledged" : true, "deletedCount" : 5 }

Nesse caso, havia cinco documentos na coleção e todos os cinco foram excluídos.

Mais informações


Os métodos acima também aceitam vários argumentos opcionais, como writeConcern e collation .

deleteOne() e deleteMany() também aceite uma hint argumento.

Abaixo estão os links para a documentação do MongoDB para cada método/comando:
  • db.collection.remove()
  • delete
  • db.collection.deleteOne()
  • db.collection.deleteMany()