MongoDB를 사용하는 경우 만약 불필요한 컬럼이 존재할 수 있습니다. 예전에는 사용했었지만 현재는 사용하지 않는 경우의 필드가 그런 경우가 되겠죠.

이 경우 더 이상 필요없는 컬럼은 바로 삭제하는 것이 좋을 것입니다. 그렇다면 어떻게 하면 MongoDB의 컬럼을 삭제할 수 있을까요? 아래에서 알아봅니다.



# MongoDB 불필요한 컬럼 삭제하는 방법
이때 많이 사용하는 방법 역시 update를 사용하는 쿼리문입니다. update는 컬렉션의 값을 새롭게 변경하거나 추가할 수도 있지만 반대로 삭제하는 것도 가능합니다. 이를 위해서 추가로 연산자 $unset을 사용해야 합니다.
db.collection.update(
  { 'columnName': { '$exists': true } }, // 일치하는 컬럼, 필드를 찾기
  { '$unset': { 'columnName': true } }, // $unset 연산자로 제거하기
  false, // [Option] Upsert 적용 여부 <Boolean>
  true // [Option] 멀티 업데이트(Multi update) 여부 <Boolean>
)

그럼 간단한 예제를 아래에서 만들어 수행하여 보도록 하겠습니다.


! 컬럼 삭제하기 예제
간단하게 예를들어 봅니다. 만약 아래와 같은 컬렉션에 다음의 컬럼이 존재한다고 가정합니다.

- 컬렉션 이름 : mySite
=================
no       ||  name  || count
------------------------------
1          || web     || 12
2          || is          ||
3          || free      ||
=================


위 컬럼중 count는 현재 사용하지 않기 때문에 빈 값들이 보입니다. 더 이상 필요없는 경우라 판단되어 삭제하기 위해서 아래와 같이 쿼리를 실행하도록 합니다.
db.mySite.update(
  {'count': { '$exists': true }},
  {'$unset': { 'count': true }},
  false,
  true
)

이제 쿼리를 수행하면 기존의 count 컬럼은 삭제되어  더 이상 나타나지 않게 됩니다.

위의 쿼리문의 첫 번째 인자는 일치하는 컬럼을 찾기 위해서 $exist 연산자를 사용하여 count가 존재하는 컬럼만 대상으로 수행하였습니다. 모든 컬렉션에서 해당 필드를 삭제할 것이므로 빈 값인 {}를 사용한 아래의 쿼리문도 결과는 동일하게 나타날 것입니다.
db.mySite.update(
  {},
  {'$unset': { 'count': true }},
  false,
  true
)

여기서 중요한 부분은 바로 $unset 연산자를 사용한 부분입니다.


여기까지 MongoDB에서 더 이상 사용하지 않는 deprecated된 컬럼 삭제 방법에 대하여 알아보았습니다.