Computer >> 컴퓨터 >  >> 프로그래밍 >> MongoDB

MongoDB 컬렉션에서 $eq 연산자로 일치하는 값의 문서 제거하기

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 연산자를 활용하면 원하는 조건의 문서만 정확하게 식별하여 안전하게 삭제할 수 있습니다.