处理MongoDB架构更改

时间:2012-12-10 21:28:56

标签: mongodb mongodb-.net-driver mongodb-query

如何处理生产中的架构更改?

假设我在我的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类型的枚举, 这整个字典是一个全新的字段,我想添加到现有的集合中,具有这些默认值。你会怎么做?

感谢!!!

1 个答案:

答案 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_({}查询匹配所有内容)。 希望这是你需要知道的。