MongoDB에 저장된 타입을 숫자 또는 문자로 변경하는 방법입니다. MongoDB의 값은 저장된 타입과 다른 경우 에러가 발생하므로 타입 변경이 필요합니다. 어떻게 하면 MongoDB 타입 변경을 숫자에서 문자 또는 문자에서 숫자로 변경 가능한지 알아봅니다.



# MongoDB 숫자, 문자 타입 변경하기

아래 방법은 find()를 사용하여 얻는 데이터 중에서 특정 필드의 타입을 숫자 또는 문자로 변경하는 방법입니다. 간단한 문법은 아래와 같습니다.
db.myCollection.find(검색쿼리).forEach(function(item) {
  item.필드명 = new Number(item.필드명);
  db.myCollection.save(item);
})

코드를 살펴보면 find() 쿼리로 얻은 모든 커서 데이터에 forEach()를 사용하여 각각의 커서를 item 인자로 전달받아 new Number() 또는 new String()을 사용해 새롭게 변경하여 저장하는 방법입니다.
new Number() // 숫자 타입으로 변경 함
new String() // 문자 타입으로 변경 함
그럼 아래에서 간단한 예제를 알아보겠습니다.


! MongoDB 타입을 숫자 타입으로 변경 후 저장하는 방법
현재 해당하는 필드 count를 모두 숫자로 변경하는 방법입니다.
db.collection.find({'site', 'webisfree'}).forEach(function(item){
  item.count = new NumberInt(item.count);
  db.collection.save(item);
})

이제 타입이 변경되고 저장됩니다. MongoDB에서 forEach()문이 굉장히 많이 사용됩니다.

@ 팁과 정보

참고로 64-bit integer 타입으로 변경할 경우 new NumberLong()으로 사용하면 됩니다.

그럼 아래는 문자 타입으로 변경하는 방법입니다. 거의 동일합니다.


! MongoDB 타입을 문자 타입으로 변경 후 저장하는 방법
아래 예제는 타입을 문자로 변경합니다. 이번에는 new String()을 사용합니다.
db.collection.find({'site', 'webisfree'}).forEach(function(item){
  item.value = new String(item.value);
  db.collection.save(item);
})

이제 item.value의 값은 문자 타입으로 변경되었습니다.

여기까지 간단하게 MongoDB의 필드 타입 변경에 대하여 알아봤습니다.