본문 바로가기
쿤즈 Server/MongoDB

[MongoDB] 데이터 삭제(Delete) 방법

by Koonz:) 2021. 6. 7.
728x90

데이터 베이스 프로그래밍에 가장 기본은 CRUD입니다. RDBMS(관계형 데이터 베이스)든 NoSQL이든 관계없습니다. 그래서 이전 포스팅까지는 알아본 내용은 Create, Read, Update 였습니다.

이번 포스팅에서는 마지막인 Delete에 대해서 알아보도록 하겠습니다. 


MongoDB 접속 및 데이터 확인

데이터를 확인부터 해야 삭제할 데이터를 선택할 수 있습니다. 우선 MongoDB에 접속하도록 합니다.

show databases
use sample_training
show collections

우선 데이터 베이스를 확인하고 저는 sample_training 데이터 베이스로 이동하였습니다. 이 데이터 베이스에는 어떤 collection이 있는지 확인하는 명령어까지 사용해 보았습니다.

 

collection은 inspections을 사용하기 위해서 우선 find 쿼리를 이용해서 데이터를 가져와 볼께요.

db.inspections.find({ "test": 1 }).pretty()

위 명령은 inspections에서 test값이 1인 데이터를 찾고 화면에는 pretty 하게 출력해 달라는 의미입니다. 결과는 아래와 같습니다.

이 값이 여러 개가 있네요. 그럼 데이터를 삭제해 보도록 하겠습니다.


여러 개의 데이터 한 번에 삭제 deleteMany

모든 document에서 데이터를 삭제하기 위한 함수는 deleteMany() 함수입니다. 이 함수를 이용해서 위에서 찾은 test값이 1인 데이터를 삭제해 보도록 하겠습니다. 다음과 같이 입력합니다.

db.inspections.deleteMany({"test":1})

정상적으로 처리가 되었다면 deleteCount값이 0보다 큰 값으로 출력됩니다. 확인을 위해서 동일하게 검색해보면 아무 데이터도 나타나지 않습니다.


데이터 1개 삭제 deleteOne

특정 데이터 1개를 삭제하기 위해서는 deleteOne() 함수를 사용합니다. 이 함수를 이용해서 이번에는 test값이 3인 데이터를 삭제해보도록 하겠습니다. 다음과 같이 입력합니다.

db.inspections.deleteOne({ "test": 3 })

이때 문제가 있습니다. 만약 test값이 3인 데이터가 여러 개라면 어떤 것이 지워질까요?

결과는 아래와 같이 나타납니다.

우선 test가 3인 데이터들을 검색해 보았더니 2개가 나타납니다. 이때 deleteOne() 함수를 이용해서 삭제를 했을 때, 정확하게 1개의 데이터가 삭제되었다고 deleteCount를 반환했습니다.

 

이후에 다시 find() 함수를 이용해서 검색해보았더니 1개의 데이터만 나타납니다. 지워진 데이터는 순차적으로 검색해서 나온 첫 번째 데이터가 삭제되는 것입니다. 즉, 가장 최상단으로 검색된 데이터 한 개가 삭제되는 것입니다.


이번 포스팅에서는 CRUD의 마지막인 Delete에 대해서 알아보았습니다. mongoDB를 이용해서 delete를 할 때, 여러 개를 한꺼번에 삭제하는 deleteMany()와 한 개의 데이터만 삭제하는 deleteOne()을 사용해 보았습니다. 도움이 되셨으면 합니다. 이상입니다.

댓글