【发布时间】:2014-03-13 10:41:24
【问题描述】:
我正在尝试找到一种 优雅 的方式来更新现有的 MongoDB 文档,其中包含从网页接收到的 json 数据。问题是我事先不知道要更新哪些字段 - 所以我不能使用 set__field,我的 MongoDB 文档中只有要更新的字段的 json 表示。另外,我使用的是 DynamicDocuments,因此可能需要在文档上设置新字段。 例如:
class Study(DynamicDocument):
study_accession_nr = StringField()
study_name = StringField()
study_type = StringField()
json 可能看起来像 - 例如:
{"_id" : "123", "study_name" : "Statistics"}
或
{"_id" : "123", "study_type" : "research", "study_name" : "Statistical analysis"}
我可以从控制台轻松完成,或者使用 pymongo,但我不知道如何使用 Mongoengine 执行此操作,除非我手动 setattr(myDocInstance, nameOfField, val),这对我来说看起来不太优雅。 谢谢!
【问题讨论】:
-
如果你需要纯粹的无模式数据库,为什么要选择规则严格的ORM?你应该试试 pymongo。
-
因为我想拥有文档和嵌入文档的层次结构,并定义一组必填字段,而我在可选字段上相当灵活。
-
“文档和嵌入文档的层次结构”是您作为开发人员而不是 ORM 的任务,“并且定义一组必填字段”如果我们谈论 Web 应用程序,您可以验证来自用户的表单。跨度>
-
它不仅仅是一个 Web 应用程序,它是一个复杂应用程序的后端,它在前端公开了一个 REST API。是的,我可以在应用程序的逻辑中定义文档的层次结构,但是我还必须重写一些由 ORM(Mongoengine)实现的功能
-
我明白了......好吧,那么谢谢你的建议。我开始对 Mongoengine 有点恼火,因为我找不到好的完整示例来说明如何执行文档中提到的操作,以及每个参数的外观。
标签: python mongoengine