Изменение изменений схемы MongoDB

58
6

Как вы относитесь к изменениям схемы в производстве?

Скажем, я подделываю некоторые классы в моем проекте С#, добавляя сложное свойство, которое состоит из словаря (ключ (UInt16), значение (UInt16)), а значение имеет значение по умолчанию, целое число. Как бы вы добавили это в свой текущий экземпляр MongoDB в производство?

С# Пример: я добавляю этот словарь к существующему классу (который, очевидно, отражает в 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 a UInt16 типизированный enum, весь этот словарь - это совершенно новое поле, которое я хотел бы добавить в существующую коллекцию с этими значениями по умолчанию. Как вы поступите?

Благодарю!!!

спросил(а) 2012-12-11T00:28:00+04:00 7 лет, 10 месяцев назад
1
Решение
58

Кажется, это одноразовая операция, поэтому вы можете сделать это через оболочку mongodb. Войдите на свой сервер 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_ для каждого документа (запрос {} соответствует всем). Надеюсь, это то, что вам нужно знать.

ответил(а) 2012-12-11T01:19:00+04:00 7 лет, 10 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема