Сохранение и обновление вложенных документов с MongoEngine - PullRequest
0 голосов
/ 31 декабря 2018

Я хочу реализовать эту структурную модель для хранения моих данных на Mongodb с MongoEngine в колбе:

skills = [{"asm":"Assembly",
           "flag":False,
          "date": datetime},
          {"java":"Java",
           "flag":False,
           "date": datetime}]

Так что я не знаю, как я могу объявить и обновить такую ​​структуру.Для обновления одного объекта я использовал:

User.objects(skills=form.skills.data).update_one()

Однако я не знаю, как обновить больше полей за один снимок.Я попытался использовать приведенный ниже код, но он не работает.

now = datetime.now()
 User.objects(skills=form.skills).update_one(set__skills = ({'ruby':'Ruby'}, {'flag':'true'},{'date':now}))

Какие поля я должен объявить в forms.py?

1 Ответ

0 голосов
/ 06 января 2019

Для того, что я понял, вам нужен вложенный документ (навыки) в другого (который в данном случае ссылается на пользователя).Для того, чтобы сделать что-то подобное, вам не нужно атомарно обновлять поле, но добавить значения к поддокументу и сохранить все.Стараясь следовать вашему примеру, в вашем случае следует сделать что-то вроде этого:

user = User.objects(email=current_user.email).get()

Чтобы получить BaseQuery, который ссылается на пользователя X, через определенный фильтр запросов, в моем примере - адрес электронной почты текущего зарегистрированного пользователя.

user.kskills.append(SubDocumentClass(skillName="name_of_the_skill", status=True, date=datetime.now()))

Для добавления коллекции в список вложенных документов.(Я добавил ваше поле)

user.save() 

Чтобы сохранить все

...