2012-07-08 2 views
1

우리 웹 사이트는 제작 중이며 (단계 1) MongoDB와 Asp.Net MVC를 사용합니다. 그러나 2 단계에서는 스키마 이름을 변경하고 일부 데이터 유형을 변경하는 등 스키마 클래스를 일부 변경해야합니다.MongoDb 클래스 속성 이름 업데이트

누군가가 올바른 방향으로 마이그레이션 스크립트를 작성하여 모든 속성 이름을 새 이름으로, 데이터 유형을 새로운 유형으로 업데이트 할 수 있다면 정말 좋습니다.

데이터베이스에서 모든 컬렉션을 가져 와서 속성 이름을 새 이름으로 업데이트하고 데이터 형식을 변경하려면 작은 C# 응용 프로그램을 작성할 수 있습니까?

감사합니다.

답변

0

최근에 나는 이것을 정확하게했습니다.

먼저 코드의 모든 클래스 이름을 바꾸십시오.
다음과 함께 mongo 셸을 사용하십시오. renameCollection
일회성 작업 인 경우 스크립트를 작성할 필요가 없습니다. 그렇게 말하는

, 당신이 alexjamesbrown으로

+0

안녕하세요, renameCollection은 클래스의 속성 이름을 바꿉니 까? – user636525

0

필요 쉽게 경우 다른 서버에서 다시 실행할 수 있도록 물론 처음에 속성의 이름을 변경, 귀하의 모든 이름 변경과은 .js 파일을 쓸 수 귀하 수업.

그런 다음 Mongo db에 대한 간단한 기본 버전 구조를 만들 수 있습니다. 최신 버전을 저장 한 다음 응용 프로그램 시작시 버전을 확인하고 리플렉션을 사용하여 버전이 최신 버전 인 파일을 찾습니다. 그런 다음 소스 트리에 다음과 같은 형식의 파일을 보관할 수 있습니다.

public class Version3 : MongoMigration 
{ 
    public Version3 (MongoDatabase database) : base(database) { } 

    public override double Version 
    { 
     get { return 3; } 
    } 

    protected override void PerformUpgrade() 
    { 
     var collectionToUpdate = Database.GetCollection("MyCollection"); 
     var allDocuments = collectionToUpdate .FindAll(); 

     foreach (var document in allDocuments) 
     { 
      var oldFieldValue = document ["OldFieldName"]; 
      if (!document.Contains("NewFieldName")) 
       document.Add("NewFieldName", oldFieldValue); 
      document.Remove("OldFieldName"); 

      collectionToUpdate.Save(document); 
     } 
    } 
}