반갑습니다!
이번 포스트에서는 특정 도큐먼트 또는 다수의 도큐먼트를 삭제하는 명령어인
deleteOne() 함수와 deleteMany() 함수에 대해 알아보겠습니다 ^^
두 함수 역시 마찬가지로 파라미터로 필터 조건을 받을 수 있는데요
만약 deleteMany() 함수 사용시 특정 필터 조건을 지정하지 않으면
해당 컬렉션의 모든 데이터가 삭제되는 일종의 clear 작업이 수행됩니다 ^^;;
RDBMS나 NoSQL이나 데이터베이스를 다룰 때
특히 이 데이터 삭제 작업은 정말 주의가 필요한 작업인데요
자칫 잘못하면 엄한 데이터까지 몽땅 삭제시켜 버려서
대형사고가 되어버릴 수도 있기 때문이죠 ^^;;;
도큐먼트 삭제에 관련된 부분은 굉장히 간단한 내용이기 때문에
예제 몇 가지를 살펴보고 마무리짓도록 하겠습니다 ^^
현재 users 컬렉션에 저장되어 있는 도큐먼트 목록인데요
address가 "수원시"인 데이터들이 4개가 존재합니다 ^^
이 중에 하나의 데이터를 삭제해볼까요?
deleteOne() 함수를 사용해주시면 되는데요
address 필드의 값이 "수원시"인 도큐먼트가 여러개가 있지만
해당 함수를 사용하여 필터 조건을 적용시
조건을 만족하는 여러 도큐먼트 중 최상단 1개의 도큐먼트에만 해당 작업이 적용됩니다 ^^
name이 David인 도큐먼트가 가장 상단에 있었는데요
아마 이 데이터가 삭제되었을 것입니다
실제로 확인을 한 번 해볼까요? ^^
find() 함수를 사용하여 데이터를 전체 조회해보니
해당 조건을 만족하는 4개의 도큐먼트들 중에서
사용자의 예측대로 name이 David인 데이터만 삭제된 것을 확인할 수 있겠습니다 ^^
그럼 이번에는 deleteMany()를 사용해서
한 번에 여러개의 데이터를 동시 삭제해볼까요?
이번에는 필터 조건을 지정할 때 이전에 배운 내용을 조금 응용해보겠습니다 ^^
$or 키워드를 이용해서 OR 논리연산을 적용하겠는데요
address가 "서울" 또는 "수원시"를 만족하는 모든 데이터들에 대해서
도큐먼트 삭제 작업을 시행하겠습니다 ^^
해당 작업의 적용 대상을 보니 5개라고 출력이 되네요 ^^
이제 잔존해있는 데이터를 콘솔 창에 출력해서 확인해볼까요?
아까 8개의 데이터 중에서 5개가 삭제되어
이제는 3개의 데이터만 남아있는 것을 확인할 수 있겠습니다 ^^
delete()와 관련된 부분에서 추가할만한 유용한 주요 문법은 없습니다
앞서 살펴본 내용들로 이미 필터 조건을 고도화시키는데에 충분합니다 ^^
이번 포스트까지 해서
deleteOne()과 deleteMany()에 관련된 내용까지 살펴보았습니다
이렇게 기본 CRUD의 내용은 마무리하고,
다음 포스트부터는 심화 내용인 Aggregation에 대해서 알아보겠습니다 ^^
포스트 읽어주셔서 감사드리고 다음 포스트로 찾아뵙겠습니다!