본문 바로가기
MongoDB/MongoDB 기본 CRUD

[MongoDB 기본 CRUD] 15. deleteOne(), deleteMany() 사용하여 도큐먼트 삭제하기

by Fletcher 2024. 8. 20.

 

반갑습니다!

 

이번 포스트에서는 특정 도큐먼트 또는 다수의 도큐먼트를 삭제하는 명령어인

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에 대해서 알아보겠습니다 ^^

 

포스트 읽어주셔서 감사드리고 다음 포스트로 찾아뵙겠습니다!