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()