1

私たちのウェブサイトは本番環境 (フェーズ 1) で、MongoDB と Asp.Net MVC を使用しています。ただし、フェーズ 2 では、プロパティ名の変更や一部のデータ型の変更など、スキーマ クラスにいくつかの変更を加える必要があります。

すべてのプロパティ名を新しい名前に更新し、データ型を新しい型に更新するための移行スクリプトを作成するための正しい方向を誰かが教えてくれれば、それは素晴らしいことです。

データベースからすべてのコレクションを取得し、プロパティ名を新しい名前に更新してデータ型を変更する小さな C# アプリを作成することは可能ですか?

ありがとう !

4

2 に答える 2

0

私は最近まさにこれをしました。

まず、コード内のすべてのクラスの名前を変更します。次に、 renameCollection
でmongoシェルを使用します 。これが1回限りの操作である場合は、スクリプトを作成する必要はありません。

そうは言っても、もちろん、すべての名前を変更した.jsファイルを作成して、必要に応じて別のサーバーで簡単に再実行できるようにすることもできます。

于 2012-07-10T11:03:06.027 に答える
0

alexjamesbrown として、まずクラスのプロパティの名前を変更します。

次に、Mongo データベースの単純な基本的なバージョン管理構造を作成できます。最新バージョンを保存し、アプリケーションの起動時にバージョンを確認し、リフレクションを使用してそれより新しいバージョンのファイルを探します。次に、次のような形式のファイルをソース ツリーに保持するだけです。

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);
        }
    }
}
于 2012-09-11T00:16:45.777 に答える