2012-12-10 26 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