안녕하세요! 이번 글에서는 Mongoose를 사용하여 데이터를 삭제하는 방법에 대해 알아보겠습니다. 업데이트와 마찬가지로 삭제에는 두 가지 주요 유형의 메서드가 있습니다.
Remove 메서드: remove, deleteOne, deleteMany
Mongoose에서 삭제 작업은 remove, deleteOne, deleteMany 메서드를 사용하여 수행할 수 있습니다. 이 메서드들은 관련 문서를 직접 삭제하며 결과로는 삭제된 개수를 반환합니다.
remove 메서드
remove 메서드는 지정된 조건과 일치하는 모든 문서를 삭제합니다. 그러나 Mongoose에서는 이 메서드의 사용을 권장하지 않고, 대신 더 구체적인 deleteOne 또는 deleteMany 메서드를 사용하도록 권고하고 있습니다.
// remove 메서드 권장하지 않음
Movie.remove({ title: 'Amelie' }).exec();
deleteOne 메서드
deleteOne 메서드는 조건에 일치하는 첫 번째 문서만 삭제합니다.
Movie.deleteOne({ year: { $gte: 1999 } }).exec();
deleteMany 메서드
deleteMany 메서드는 조건에 일치하는 모든 문서를 삭제합니다.
Movie.deleteMany({ year: { $gte: 1999 } }).exec();
findOneAndDelete, findByIdAndDelete
삭제 후에 삭제된 문서를 반환받고 싶다면 findOneAndDelete 또는 findByIdAndDelete 메서드를 사용합니다. 이들 메서드는 삭제된 문서를 반환하므로 어플리케이션에서 활용할 수 있습니다.
findOneAndDelete 메서드
findOneAndDelete 메서드는 조건에 일치하는 문서 중 첫 번째 문서를 삭제하고 삭제 전의 문서를 반환합니다.
Movie.findOneAndDelete({ title: 'Alien' }).exec();
findByIdAndDelete 메서드
findByIdAndDelete 메서드는 주어진 ID에 해당하는 문서를 삭제하고 삭제 전의 문서를 반환합니다.
Movie.findByIdAndDelete(movieId).exec();
주의사항: 경고 메시지 및 설정
remove 메서드 사용 시 경고 메시지가 나타날 수 있습니다. 이 경우 deleteOne, deleteMany, bulkWrite를 사용하라는 안내가 있습니다. 또한, findOneAndDelete나 findByIdAndDelete 메서드를 사용할 때 삭제된 문서를 반환받으려면 { new: true } 옵션을 사용합니다.
// findOneAndDelete에서 삭제 후 새로운 문서를 반환받기 위한 예제
Movie.findOneAndDelete({ title: 'Alien' }, { new: true }).exec();
이렇게 삭제 메서드들을 조합하여 다양한 상황에서 데이터를 효과적으로 삭제할 수 있습니다. 여러분은 삭제 작업을 수행할 때 어떤 정보를 반환받고 활용할지 고려하여 적절한 메서드를 선택해야 합니다. 다음 글에서는 Mongoose의 고급 기능 중 하나인 유효성에 대해 자세히 알아보겠습니다. 계속해서 Mongoose의 다양한 기능을 익혀보세요!
'백엔드(Backend) > 데이터베이스' 카테고리의 다른 글
[MongoDB] 추가 스키마 제약조건 (0) | 2023.11.30 |
---|---|
[MongoDB] Mongoose 스키마 유효성 검사 (1) | 2023.11.30 |
[MongoDB] Mongoose로 업데이트하기 (0) | 2023.11.29 |
[MongoDB] Mongoose로 찾기 (0) | 2023.11.29 |
[MongoDB] 데이터 대량 삽입하기 (0) | 2023.11.28 |