MongoDB deleteMany() 소개
MongoDB에서 조건에 맞는 여러 문서를 한 번에 삭제하려면 deleteMany() 메서드를 사용합니다. 이 메서드는 지정한 필터 조건과 일치하는 모든 문서를 컬렉션에서 제거하며, 실제로 몇 개의 문서가 삭제되었는지 결과로 알려줍니다.
이번 글에서는 예제를 통해 deleteMany()의 기본 사용법을 단계별로 살펴보겠습니다.
1단계: 예제용 컬렉션 생성 및 문서 삽입
먼저 테스트에 사용할 컬렉션을 만들고 문서를 여러 개 삽입합니다.
> db.deleteMultipleDocumentsDemo.insertOne({"StudentFirstName":"Larry"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5ce00b07bf3115999ed51214")
}
> db.deleteMultipleDocumentsDemo.insertOne({"StudentFirstName":"Chris"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5ce00b0bbf3115999ed51215")
}
> db.deleteMultipleDocumentsDemo.insertOne({"StudentFirstName":"David"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5ce00b0fbf3115999ed51216")
}
> db.deleteMultipleDocumentsDemo.insertOne({"StudentFirstName":"Bob"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5ce00b12bf3115999ed51217")
}
> db.deleteMultipleDocumentsDemo.insertOne({"StudentFirstName":"Carol"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5ce00b18bf3115999ed51218")
}위 명령을 실행하면 Larry, Chris, David, Bob, Carol 다섯 명의 학생 이름이 담긴 문서가 생성됩니다.
2단계: find()로 전체 문서 확인하기
삽입된 문서를 확인하려면 find() 메서드를 사용합니다.
> db.deleteMultipleDocumentsDemo.find();
실행 결과는 다음과 같습니다.
{ "_id" : ObjectId("5ce00b07bf3115999ed51214"), "StudentFirstName" : "Larry" }
{ "_id" : ObjectId("5ce00b0bbf3115999ed51215"), "StudentFirstName" : "Chris" }
{ "_id" : ObjectId("5ce00b0fbf3115999ed51216"), "StudentFirstName" : "David" }
{ "_id" : ObjectId("5ce00b12bf3115999ed51217"), "StudentFirstName" : "Bob" }
{ "_id" : ObjectId("5ce00b18bf3115999ed51218"), "StudentFirstName" : "Carol" }총 5개의 문서가 정상적으로 저장된 것을 확인할 수 있습니다.
3단계: deleteMany()로 여러 문서 삭제하기
이제 $in 연산자와 함께 deleteMany()를 사용하여 특정 이름(Larry, David, Carol)에 해당하는 문서들을 한 번에 삭제해 보겠습니다.
> db.deleteMultipleDocumentsDemo.deleteMany({StudentFirstName: {$in: ["Larry", "David", "Carol"]}});
{ "acknowledged" : true, "deletedCount" : 3 }결과를 보면 deletedCount : 3으로, 필터 조건과 일치하는 3개의 문서가 성공적으로 삭제되었음을 알 수 있습니다.
4단계: 삭제 후 남은 문서 확인하기
삭제가 완료되었으므로 다시 find()를 실행하여 남은 문서를 확인합니다.
> db.deleteMultipleDocumentsDemo.find();
실행 결과는 다음과 같습니다.
{ "_id" : ObjectId("5ce00b0bbf3115999ed51215"), "StudentFirstName" : "Chris" }
{ "_id" : ObjectId("5ce00b12bf3115999ed51217"), "StudentFirstName" : "Bob" }Larry, David, Carol의 문서는 사라지고 Chris와 Bob의 문서만 남아 있는 것을 볼 수 있습니다.
정리
deleteMany()는 필터 조건과 일치하는 모든 문서를 한 번에 삭제할 때 유용한 메서드입니다. $in 같은 쿼리 연산자와 조합하면 원하는 값 목록에 해당하는 문서만 손쉽게 제거할 수 있으며, 반환되는 deletedCount 값으로 삭제된 문서 수를 바로 확인할 수 있습니다.