2012-12-10 121 views
1

如何處理生產中的架構更改?假設我在C#項目中篡改了一些類,添加了一個由Dictionary(Key(UInt16),Value(UInt16))組成的複雜屬性,而值有一個默認值,一個整數。你如何將這個添加到當前生產的MongoDB實例中?處理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類型的枚舉, 這整個字典是一個品牌新的字段,我想添加到現有的集合,與這些默認值。你會怎麼做?

謝謝!

回答

1

這似乎是一次性的操作,所以你可以通過mongodb shell來完成。 登錄到您的mongodb服務器(或RP主服務器,如果您使用ReplicaSet)。

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) 

更新命令設置_your_brand_new_field_字段_default_dict_每個文檔({}查詢配襯一切)。 希望這是你需要知道的。

+1

非常感謝! – max2005b

+0

嗨,比方說,我已經有一個詞典字段。字典的值是一個包含名爲「test」的字段的對象。我怎樣才能刪除這個領域? – max2005b