MongoDB 컬렉션에서 remove() 메서드를 사용하면 $eq 연산자로 지정한 값과 일치하는 문서를 간편하게 제거할 수 있습니다. $eq는 필드의 값이 주어진 값과 정확히 동일한 문서를 찾아내는 비교 연산자입니다.
이번 글에서는 실제 예제를 통해 컬렉션 생성부터 문서 제거, 결과 확인까지 단계별로 살펴보겠습니다.
1단계: 샘플 컬렉션 생성
먼저 예제에 사용할 컬렉션을 만들고 문서를 삽입합니다.
> db.demo626.insertOne({id:1,"Name":"Chris"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e9ac6376c954c74be91e6ae")
}
> db.demo626.insertOne({id:2,"Name":"David"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e9ac63e6c954c74be91e6af")
}
> db.demo626.insertOne({id:3,"Name":"Bob"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e9ac6436c954c74be91e6b0")
}
> db.demo626.insertOne({id:4,"Name":"Mike"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e9ac6486c954c74be91e6b1")
}2단계: 전체 문서 조회
find() 메서드를 사용해 컬렉션의 모든 문서를 확인합니다.
> db.demo626.find();
위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.
{ "_id" : ObjectId("5e9ac6376c954c74be91e6ae"), "id" : 1, "Name" : "Chris" }
{ "_id" : ObjectId("5e9ac63e6c954c74be91e6af"), "id" : 2, "Name" : "David" }
{ "_id" : ObjectId("5e9ac6436c954c74be91e6b0"), "id" : 3, "Name" : "Bob" }
{ "_id" : ObjectId("5e9ac6486c954c74be91e6b1"), "id" : 4, "Name" : "Mike" }3단계: $eq 조건으로 문서 제거
다음은 Name 필드의 값이 "Bob"과 일치하는 문서를 제거하는 쿼리입니다.
> db.demo626.remove({Name:{$eq:"Bob"}});
WriteResult({ "nRemoved" : 1 })nRemoved 값이 1로 표시되었으므로, 조건에 해당하는 문서 한 건이 성공적으로 삭제된 것입니다.
4단계: 삭제 결과 확인
다시 find() 메서드로 컬렉션의 모든 문서를 조회해 보겠습니다.
> db.demo626.find();
실행 결과는 다음과 같습니다.
{ "_id" : ObjectId("5e9ac6376c954c74be91e6ae"), "id" : 1, "Name" : "Chris" }
{ "_id" : ObjectId("5e9ac63e6c954c74be91e6af"), "id" : 2, "Name" : "David" }
{ "_id" : ObjectId("5e9ac6486c954c74be91e6b1"), "id" : 4, "Name" : "Mike" }출력 결과에서 Name이 "Bob"인 문서(id: 3)가 사라진 것을 확인할 수 있습니다.
참고: 최신 MongoDB 버전에서의 대안
remove() 메서드는 현재 권장되지 않으므로(deprecated), 최신 버전의 MongoDB에서는 상황에 맞게 아래 메서드를 사용하는 것이 좋습니다.
- deleteOne(): 조건과 일치하는 첫 번째 문서 하나만 제거
- deleteMany(): 조건과 일치하는 모든 문서를 제거
예를 들어 위 예제와 동일한 작업은 다음과 같이 수행할 수 있습니다.
> db.demo626.deleteOne({Name:{$eq:"Bob"}});이처럼 $eq 연산자를 활용하면 원하는 조건의 문서만 정확하게 식별하여 안전하게 삭제할 수 있습니다.