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

MongoDB에서 필드를 검색한 후 삭제하는 방법 ($exists와 $unset 활용)

MongoDB에서 필드 검색 후 삭제하기

MongoDB에서 특정 필드의 존재 여부를 검색하려면 $exists 연산자를 사용하고, 검색된 필드를 삭제하려면 $unset 연산자를 사용합니다. $unset은 문서에서 지정된 필드를 완전히 제거하는 역할을 합니다.

1. 컬렉션 생성 및 문서 삽입

먼저 예제에 사용할 컬렉션을 만들고 문서를 삽입하겠습니다.

> db.demo562.insertOne({"Name":"Chris","Age":21});{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e8f4ae854b4472ed3e8e872")
}
> db.demo562.insertOne({"Age":20});{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e8f4ae954b4472ed3e8e873")
}
> db.demo562.insertOne({"Name":"David","Age":23});{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e8f4aea54b4472ed3e8e874")
}

2. 전체 문서 조회

find() 메서드를 사용하여 컬렉션의 모든 문서를 확인합니다.

> db.demo562.find();

위 쿼리는 다음과 같은 결과를 출력합니다.

{ "_id" : ObjectId("5e8f4ae854b4472ed3e8e872"), "Name" : "Chris", "Age" : 21 }
{ "_id" : ObjectId("5e8f4ae954b4472ed3e8e873"), "Age" : 20 }
{ "_id" : ObjectId("5e8f4aea54b4472ed3e8e874"), "Name" : "David", "Age" : 23 }

3. 필드 검색 후 삭제

다음은 레코드를 검색한 후 해당 필드를 삭제하는 쿼리입니다. $exists 조건으로 Name 필드가 존재하는 문서를 찾고, $unset으로 해당 필드를 제거합니다. 이때 multi:true 옵션을 지정하면 조건에 일치하는 모든 문서에 일괄 적용됩니다.

> db.demo562.update( {Name:{$exists:true} },{ $unset: {"Name":""}},{multi:true});
WriteResult({ "nMatched" : 2, "nUpserted" : 0, "nModified" : 2 })

실행 결과를 보면 조건에 일치한 2개의 문서에서 Name 필드가 성공적으로 삭제되었음을 확인할 수 있습니다.

4. 삭제 결과 확인

find() 메서드로 다시 전체 문서를 조회해 봅니다.

> db.demo562.find();

위 쿼리는 다음과 같은 결과를 출력합니다.

{ "_id" : ObjectId("5e8f4b6654b4472ed3e8e875"), "Age" : 21 }
{ "_id" : ObjectId("5e8f4b6754b4472ed3e8e876"), "Age" : 20 }
{ "_id" : ObjectId("5e8f4b6854b4472ed3e8e877"), "Age" : 23 }

모든 문서에서 Name 필드가 제거되고 Age 필드만 남은 것을 확인할 수 있습니다. 이처럼 $exists와 $unset을 조합하면 특정 필드를 가진 문서를 손쉽게 찾아 해당 필드만 선택적으로 삭제할 수 있습니다.