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

MongoDB에서 필드(키) 제거하기: $unset 연산자 완벽 가이드

MongoDB에서 컬렉션에 저장된 문서에서 특정 필드(키)를 삭제해야 할 때가 있습니다. 이럴 때 $unset 연산자를 사용하면 간단하게 해결할 수 있습니다. 이 글에서는 예제를 통해 MongoDB에서 키 필드를 제거하는 방법을 단계별로 살펴보겠습니다.

1. 샘플 컬렉션 생성하기

먼저 insertOne() 메서드를 사용하여 테스트용 컬렉션을 만들고 문서를 삽입합니다.

> db.removeKeyFieldsDemo.insertOne({"StudentFirstName":"John","StudentLastName":"Doe","StudentAge":23});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5cc6c8289cb58ca2b005e672")
}
> db.removeKeyFieldsDemo.insertOne({"StudentFirstName":"John","StudentLastName":"Smith","StudentAge":21});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5cc6c8359cb58ca2b005e673")
}

위 명령으로 StudentFirstName, StudentLastName, StudentAge 세 개의 필드를 가진 두 개의 학생 문서가 생성되었습니다.

2. 현재 저장된 문서 확인하기

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

> db.removeKeyFieldsDemo.find().pretty();

실행 결과는 다음과 같습니다.

{
    "_id" : ObjectId("5cc6c8289cb58ca2b005e672"),
    "StudentFirstName" : "John",
    "StudentLastName" : "Doe",
    "StudentAge" : 23
}
{
    "_id" : ObjectId("5cc6c8359cb58ca2b005e673"),
    "StudentFirstName" : "John",
    "StudentLastName" : "Smith",
    "StudentAge" : 21
}

3. $unset 연산자로 필드 제거하기

이제 $unset 연산자를 사용하여 모든 문서에서 StudentAge 필드를 제거해 보겠습니다. 빈 조건({})을 사용하면 컬렉션 내 모든 문서에 업데이트가 적용됩니다.

> db.removeKeyFieldsDemo.updateMany({},{$unset:{StudentAge:1}});
{ "acknowledged" : true, "matchedCount" : 2, "modifiedCount" : 2 }

결과를 보면 2개의 문서가 일치(matchedCount: 2)하고, 2개의 문서가 수정(modifiedCount: 2)되었음을 확인할 수 있습니다.

4. 제거 후 결과 확인하기

다시 한번 전체 문서를 조회하여 StudentAge 필드가 실제로 삭제되었는지 확인합니다.

> db.removeKeyFieldsDemo.find().pretty();

실행 결과는 다음과 같습니다.

{
    "_id" : ObjectId("5cc6c8289cb58ca2b005e672"),
    "StudentFirstName" : "John",
    "StudentLastName" : "Doe"
}
{
    "_id" : ObjectId("5cc6c8359cb58ca2b005e673"),
    "StudentFirstName" : "John",
    "StudentLastName" : "Smith"
}

정리 및 참고 사항

  • $unset 연산자는 지정한 필드를 문서에서 완전히 삭제합니다. 값이 null로 변경되는 것이 아니라 필드 자체가 사라집니다.
  • updateMany({}, {$unset: {필드명: 1}})처럼 빈 필터를 사용하면 컬렉션의 모든 문서에 적용됩니다.
  • 특정 조건의 문서만 수정하려면 첫 번째 인자에 조건 쿼리를 지정하면 됩니다. 예: {$set: {StudentAge: {$gt: 22}}}
  • 단일 문서만 수정하고 싶다면 updateOne() 메서드를 사용하는 것이 좋습니다.
  • $unset에 지정하는 값(예: 1, "")은 실제 값과 무관하며, 필드 제거 여부만 결정합니다.

이처럼 MongoDB의 $unset 연산자와 updateMany()를 함께 사용하면 대량의 문서에서 불필요한 필드를 손쉽게 정리할 수 있습니다.