MongoDB의 deleteOne() 함수란?
MongoDB의 deleteOne() 함수는 컬렉션에서 지정한 조건과 일치하는 문서 중 최대 한 개만 삭제합니다. 여러 개의 문서가 같은 조건에 일치하더라도 가장 먼저 발견된 문서 하나만 제거되며, 나머지 문서는 그대로 유지됩니다.
이번 글에서는 실제 예제를 통해 deleteOne() 함수의 동작 방식을 단계별로 살펴보겠습니다.
1단계: 테스트용 컬렉션 생성하기
먼저 insertOne() 메서드를 사용해 demo363이라는 컬렉션에 문서들을 생성합니다. 예제에서는 'Chris'라는 이름을 가진 문서가 두 개 존재하도록 구성했습니다.
> db.demo363.insertOne({"Name":"Chris"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e57d2c3d0ada61456dc9369")
}
> db.demo363.insertOne({"Name":"David"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e57d2c7d0ada61456dc936a")
}
> db.demo363.insertOne({"Name":"Bob"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e57d2cad0ada61456dc936b")
}
> db.demo363.insertOne({"Name":"Chris"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e57d2d1d0ada61456dc936c")
}2단계: find()로 전체 문서 확인하기
find() 메서드를 사용하면 컬렉션에 저장된 모든 문서를 조회할 수 있습니다.
> db.demo363.find();
위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.
{ "_id" : ObjectId("5e57d2c3d0ada61456dc9369"), "Name" : "Chris" }
{ "_id" : ObjectId("5e57d2c7d0ada61456dc936a"), "Name" : "David" }
{ "_id" : ObjectId("5e57d2cad0ada61456dc936b"), "Name" : "Bob" }
{ "_id" : ObjectId("5e57d2d1d0ada61456dc936c"), "Name" : "Chris" }현재 'Chris'라는 이름을 가진 문서가 두 개 존재하는 것을 확인할 수 있습니다.
3단계: deleteOne()으로 문서 삭제하기
이제 Name이 'Chris'인 문서를 삭제 조건으로 지정하여 deleteOne() 함수를 실행합니다.
> db.demo363.deleteOne({Name:"Chris"});
{ "acknowledged" : true, "deletedCount" : 1 }실행 결과의 deletedCount : 1은 정확히 한 개의 문서가 삭제되었음을 의미합니다. 조건에 일치하는 문서가 두 개였지만, deleteOne()은 첫 번째로 일치하는 문서 하나만 제거합니다.
4단계: 삭제 후 결과 확인하기
다시 find() 메서드를 호출해 남아 있는 문서를 확인해 보겠습니다.
> db.demo363.find();
출력 결과는 다음과 같습니다.
{ "_id" : ObjectId("5e57d2c7d0ada61456dc936a"), "Name" : "David" }
{ "_id" : ObjectId("5e57d2cad0ada61456dc936b"), "Name" : "Bob" }
{ "_id" : ObjectId("5e57d2d1d0ada61456dc936c"), "Name" : "Chris" }'Chris' 문서 두 개 중 하나만 삭제되고 나머지 하나는 그대로 남아 있는 것을 볼 수 있습니다.
deleteOne() 사용 시 알아두면 좋은 점
- 단일 문서 삭제: 조건에 일치하는 문서가 여러 개여도 항상 한 개만 삭제됩니다.
- deletedCount 확인: 반환된 결과 객체의 deletedCount 값으로 실제 삭제된 문서 수를 파악할 수 있습니다.
- 여러 문서 삭제가 필요할 때: 조건에 일치하는 모든 문서를 삭제하려면 deleteMany() 함수를 사용해야 합니다.