2
respostas

[Dúvida] Diferença entre método findByIdAndDelete e deleteOne

Consegui aplicar a mesma funcionalidade DELETE usando o método deleteOne. A única diferença é que neste método, eu preciso passar o parâmetro como objeto da seguinte forma:

livro.deleteOne({ _id: id })

Minha dúvida é, qual dos dois métodos é mais comum utilizar e qual seria melhor de usar?

2 respostas

Resposta:

Olá, Paulo!

A sua dúvida sobre a diferença entre os métodos findByIdAndDelete e deleteOne é bastante pertinente e pode impactar a forma como você lida com operações de exclusão no MongoDB.

Diferenças principais:

  1. Método findByIdAndDelete: Este método é mais específico e é usado para encontrar um documento pelo seu _id e, em seguida, excluí-lo. Ele retorna o documento que foi removido, o que pode ser útil se você precisar de informações sobre o que foi excluído. A chamada é simples:

    const livroRemovido = await livro.findByIdAndDelete(id);
    
  2. Método deleteOne: Este método é mais genérico e pode ser usado para excluir documentos com base em qualquer critério. Você precisa passar o critério de exclusão como um objeto, como você mencionou:

    const resultado = await livro.deleteOne({ _id: id });
    

Qual usar?

  • Se você está especificamente excluindo um documento baseado no seu _id e precisa do documento que foi removido, findByIdAndDelete é mais apropriado.
  • Se você precisar de flexibilidade para excluir documentos com diferentes critérios, deleteOne é a melhor escolha.

Ambos os métodos são amplamente utilizados, e a escolha entre eles depende das necessidades específicas do seu código.

Espero que isso ajude a esclarecer sua dúvida!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Boa tarde,

Eu acredito que se trate da especificidade, pois o deleteOne, você seta o filtro que quiser e deleta pelo que desejar, e no FindById o filtro já é setado na função, o Id no caso. Eu vejo também como o querySelector e getElementsByClassName, ambos podem ser usados, porém um mais moderno e mais fácil de usar.