0

ドメイン オブジェクトにプロパティを追加すると、MongoDB ドキュメントに波及します。たとえば、新しい「facebookId」プロパティをユーザーに追加すると、MongoDB ドキュメントに新しい facebookId フィールドが追加されます。

ドキュメントのバージョンを追跡するためのさまざまなアプローチは何ですか?

すべてのドキュメントに「_version」フィールドを追加することを考えていました。他の解決策はありますか?

4

1 に答える 1

0

ドキュメント スキーマのバージョンを意味する場合、いくつかのオプションがあります。

  1. すべてのドキュメントにフィールドを追加することversionも、元のスキーマよりも新しいドキュメントのみにフィールドを追加することもできます (元のスキーマから何かが変更された場合にのみ追加します)。BSON ドキュメントではすべてのバイトがカウントされるため、_v : 1. 使用するプラットフォーム (Node.JS、C#、Java など) によっては、バージョンを持っていても逆シリアル化が簡単にならない場合があります。
  2. 特定のデータ フィールドを検出してバージョンを自動的に検出するシステムを使用します (たとえば、バージョンのみ2が を持っていますfacebookId)。単純なケースでは、フィールドの存在に基づいてオブジェクトの動作を変更することで、モデル クラスで簡単に処理できます。これは私が以前に行ったことであり、多くのシナリオでうまく機能します。
  3. コレクション内のすべてのドキュメントを更新して、新しいスキーマを反映します。これは、短いシステム ダウンタイム (ドキュメントの数によって異なります) で、すべて 1 つのパスで実行できます。
  4. 必要に応じて、ドキュメントを更新します (ドキュメントを読んだときに、現在のスキーマと一致しない場合は書き直します)。私はこれをMongoDB以外のシステムで使用しました...そしてうまく機能します(ただし、MongoDBでもうまく機能するはずです)。

新しいフィールドが null/必須ではない場合、作業が簡単になります (特に #2 と #4)。

于 2013-03-17T18:25:25.400 に答える