본문 바로가기
Error

몽고 디비 컬렉션 필드 변경시 Valid Error 해결 방법 (feat. MongoDB Compass)

by devLog by Ronnie's 2022. 3. 4.

들어가며


개발 도중 기존 기획이 변경되면서 몽고디비 컬렉션 구조가 변경되었다. 기존에 있던 필드 하위에 내용이 변경되는 사항이었는데 기존 object 타입에서 array 타입으로 변경되는 사항이었기 때문에 이를 반영하기 위해 컬렉션을 몽고디비 컬렉션을 드롭하고 새로 만드는 것보다 필드를 변경하는 것이 효율적이라 생각하였고, 그 과정에서 겪었던 Valid Error 해결 방법 및 필드 업데이트 방법을 정리한다. 

 

 

 

개발환경


데이터그립 (쿼리문 이용시 사용)

몽고디비 콤파스 (Validation 설정 변경 및 json 데이터 값 변경시 사용)

 

 

업데이트 쿼리문으로 필드 삭제하기


아래 쿼리문을 데이터그립에서 실행 후 컬렉션을 확인해보면 사라진 것을 확인할 수 있다.

 

db.컬렉션명.update(
{‘필드명’: {'$exists':true}},
{'$unset': {‘필드명:true}},
false,
true
)

 

몽고디비 콤파스에서 json 형식 데이터 넣기


아래 동그라미 표시된 곳에서 왼쪽 기능은 개별 수정할때 용이하고 오른쪽 기능은 json 형식으로 복사 붙여넣기 시 용이하다.

 

이후 데이터 값을 넣고 수정 후 update 버튼을 눌렀을때 잘 수정되거나 Valid 오류가 나거나 둘 중 하나이다. 잘 수정되는 경우는 기존 필드 데이터와 수정 필드 데이터 값이 동일한 경우이고 Valid 오류가 나는 경우는 예를 들어 기존에 object 타입이었는데 이를 array 타입으로 바꾸는 경우에 Valid 오류가 나게 된다.

 

 

 

Valid Error 해결 방법


여기서 데이터 타입을 다 지정해서 바꿔서 업데이트를 했는데 왜 오류가 나는거지? 라고 생각이 든다면 해답은 바로 상단 우측에 있는 Validation에 가서 보면 이미 해당 컬렉션을 만들때 설정되어 있는 값을 확인하면 이전 데이터 타입으로 남아 있는 것을 확인할 수 있다.

 

이때 주의점은 해당 프로퍼티별로 타입을 잘 지정해줘야 한다. 아래 타입별로 설정 타입을 참고하여 해당 타입에 맞는 값을 입력해준다. (오른쪽 ‘’ 값을 입력해주면 됨)

 

  • String = ’string’
  • Int = ‘int’
  • Boolean = ‘bool’
  • 객체 = ‘object’
  • 배열 = ‘array’

 

해당 사항을 참고하여 Valication 값을 수정 update 완료해주고 이후 다시 Documents 이동하여 해당 값을 수정하면 바뀌는 것을 확인할 있다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

댓글