Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 21, 2013 19:51:39

rater
Зарегистрирован: 2013-05-17
Сообщения: 25
Репутация: +  0  -
Профиль   Отправить e-mail  

Изменение значения во вложенном словаре. MongoDB

Имею документ с такой структурой. { "key": "value", "mykey": "myvalue", "dict": { "dict1": "val1", "dict2": "val2", "dict3": "val3"} } Подскажите, пожалуйста, как мне изменить значение val2. Пытался написать тьму вариантов самостоятельно, но успехом это не увенчалось, как и гугление. з.ы. Прошу прощения за однострочный код - в форме ввода не форматируется что-то

Отредактировано rater (Июнь 21, 2013 19:56:09)

Офлайн

#2 Июнь 21, 2013 21:23:29

reclosedev
От: Н.Новгород
Зарегистрирован: 2012-03-29
Сообщения: 870
Репутация: +  173  -
Профиль   Отправить e-mail  

Изменение значения во вложенном словаре. MongoDB

А какие варианты пробовали?
Если документ уже выбран из базы, просто как в словаре меняется значение, и передается в save()

doc['dict']['dict2'] = 'new val'
col.save(doc)
Можно и через update()

https://www.google.ru/search?q=mongo%20update%20nested%20document

Офлайн

#3 Июнь 21, 2013 21:58:22

rater
Зарегистрирован: 2013-05-17
Сообщения: 25
Репутация: +  0  -
Профиль   Отправить e-mail  

Изменение значения во вложенном словаре. MongoDB

reclosedev, спасибо, не знал, что можно так. Проблема решена.

Офлайн

#4 Июнь 22, 2013 09:57:55

lorien
От:
Зарегистрирован: 2006-08-20
Сообщения: 755
Репутация: +  37  -
Профиль  

Изменение значения во вложенном словаре. MongoDB

> Если документ уже выбран из базы, просто как в словаре меняется значение, и передается в save()

Только надо быть готовым, что в один прекрасный день у вас вдруг начнут пропадать изменения данных, если вы будете обращаться таким способом к одному и тому же объекту из разных процессов-тредов.

Офлайн

#5 Июнь 22, 2013 10:44:19

rater
Зарегистрирован: 2013-05-17
Сообщения: 25
Репутация: +  0  -
Профиль   Отправить e-mail  

Изменение значения во вложенном словаре. MongoDB

Спасибо, это Вы очень вовремя - уже успел понаблюдать такую картину, после изучения своих исходников раз за разом решил остановится на update(), т.к. проблем в коде не обнаружил. Теперь пришло здравое объяснение.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version