python - 使用 MongoEngine 保存和更新嵌套文档

标签 python mongodb flask mongoengine flask-mongoengine

我想实现这个结构模型,用 Flask 上的 MongoEngine 将我的数据存储在 Mongodb 上:

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 上声明什么样的字段?

最佳答案

据我了解,您需要将一个嵌套文档(技能)插入另一个文档(在本例中指的是用户)。要执行这样的操作,您不必自动更新字段,而是将值附加 到子文档并保存 所有内容。 试着按照你的例子,在你的情况下应该做这样的事情:

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

要通过某个查询过滤器获取指向用户 X 的 BaseQuery,在我的示例中是当前登录用户的电子邮件

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

用于将集合附加到子文档列表。 (我已经附加了你的字段)

user.save() 

保存一切

关于python - 使用 MongoEngine 保存和更新嵌套文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53989039/

相关文章:

python - 使用 Python 的 Flask 为 URL 创建 "catch all"

python - 为什么在修改列表实例时存储对 pop 的函数调用不返回最后一项?

python - 在Django项目中获取typeError错误

python - 是否可以使用 gdata API 进行谷歌搜索?

mongodb - 如何在mongodb中返回弹出的元素

python - 使用 Flask、python 和 postgresql 如何连接到预先存在的数据库?

python - 使用对象列表对嵌套列表进行排序

mongodb - MongoDB 中日期查询之间

javascript - 在 javascript/node.js 中重现 MongoDB 的映射/发出功能(不使用 MongoDB)

jquery - 将 jQuery 与 Flask 结合使用 : how to prevent jumping to top of page on form submission?