1

本番環境でスキーマの変更にどのように対処しますか?

私のC#プロジェクトのいくつかのクラスを改ざんしているとしましょう.Dictionary(Key(UInt16)、Value(UInt16))で構成される複雑なプロパティを追加し、値にはデフォルト値である整数があります。これを本番環境の現在の MongoDB インスタンスにどのように追加しますか?

C# の例: このディクショナリを既存のクラスに追加します (これは明らかにコレクションとして MongoDB に反映されます)。

public Dictionary<SomeEnum, object> SomeSettings = new Dictionary<SomeEnum, object>()
{
 { SomeEnum.BGColor, "#FFFFFF" }, //White
 { SomeEnum.QRColor, "#000000" }, //Black
 { SomeEnum.LogoSize, (UInt16)100 }, //White
 { SomeEnum.MemberDetailsColor, "#000000" }, //Black
 { SomeEnum.BottomTextColor, "#000000" }, //Black
 { SomeEnum.ShowDecreaseButton, true }
}; 

SomeEnum UInt16 型の列挙型。このディクショナリ全体は、これらのデフォルト値を使用して、既存のコレクションに追加したい新しいフィールドです。どのように行動しますか?

ありがとう!!!

4

1 に答える 1

1

これは1回限りの操作のように見えるので、mongodbシェルを介して実行できます。mongodbサーバー(またはReplicaSetを使用している場合はRPマスター)にログインします。

use your_db
default_dict = {
      uint16_key_a : uint16_value a,
      uint16_key_b : uint16_value b,
      ...
}
db.you_collection.update({},{ "$set" : { "your_brand_new_field" :default_dict} },false,true)

updateコマンドは、各ドキュメントの_your_brand_new_field_フィールドを_default_dict_に設定します({}クエリはすべてに一致します)。これがあなたが知る必要があることであることを願っています。

于 2012-12-10T22:19:57.417 に答える