如何处理生产中的架构更改?
假设我在我的C#项目中篡改了一些类,添加了一个由Dictionary(Key(UInt16),Value(UInt16))组成的复杂属性,而value有一个默认值,一个整数。您如何将它添加到生产中的当前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类型的枚举, 这整个字典是一个全新的字段,我想添加到现有的集合中,具有这些默认值。你会怎么做?
感谢!!!
答案 0 :(得分: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)
update命令为每个文档将_your_brand_new_field_字段设置为_default_dict_({}查询匹配所有内容)。 希望这是你需要知道的。