2011-02-01 2 views
0

mongodb를 사용하는 레일 프로젝트가 있습니다. 이전 모델에서 작성한 레코드 (문서)가있는 경우 문제가 있습니다. (나는 오래된 레코드에 대해서만 gettin klass 에러를 발생시킨다.)모델이 mongodb로 업데이트 될 때 레코드를 수정하는 방법

mongodb 문서를 레일스 방식으로 수정하려면 몇 가지 명령을 사용한다.

mongo에서 특정 모델을 열기 위해 mongoid를 실행할 수있는 명령이 있습니다. 그런 다음 수동으로 문서를 찌를 수 있습니다 (불필요한 연결 제거).

+1

변경이 필요한 문서를 변경하려면 mongo 쿼리를 작성해야합니다. 몽고 (mongodb)에는 모델과 같은 것이 없습니다. 사용중인 일부 응용 프로그램 라이브러리에 의해 순전히 일부 추상화 된 계층입니다. –

+0

mongo 셸을 통해 문서를 수정하지 않으면 데이터 형식이 잘못 처리됩니다. http://www.mongodb.org/display/DOCS/mongo+-+The+Interactive+Shell#mongo-TheInteractiveShell-SomeNotesonDatatypesinthehell –

답변

0

스키마 마이그레이션의 개념은 mongoid에 존재해야하며 생각하지 않습니다. 필드 이름 바꾸기 또는 제거와 같은 간단한 변경 작업을 수행 한 경우 업데이트 문을 사용하여 쉽게 수행 할 수 있지만 더 복잡한 경우 코드를 작성해야합니다.

작성해야하는 코드는 매핑 계층이 더 이상 호환되지 않으므로 객체를 변경하기 위해 드라이버 수준으로 내려갈 필요가 있습니다.

일반적으로 개체에 스키마를 변경할 때주의해야합니다. 서버에 이러한 개념이 없으며이를 적용 할 수 없기 때문입니다. 궁극적으로는 호환성을 유지하기 위해 코드 또는 사용중인 프레임 워크에 달려 있습니다.

일괄 업그레이드를 수행하지 않고 시스템을 매핑하여 동일한 스키마에있는 항목을 매핑 계층의 관점에서 유지할 때 일반적으로 발생하는 문제입니다.

관련 문제