gpt4 book ai didi

python - 如何从 json 更新 Mongoengine DynamicDocument

转载 作者:太空狗 更新时间:2023-10-30 00:03:26 25 4
gpt4 key购买 nike

我正在尝试寻找一种优雅的方法来使用从网页接收的数据作为 json 更新现有的 MongoDB 文档。问题是我事先不知道哪些字段将被更新 - 所以我不能使用 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),这对我来说看起来不太优雅。谢谢!

最佳答案

你可以在启动类时传递数据:

data = {"_id" : "123", "study_type" : "research", "study_name" : "Statistical analysis"}
doc = Study(**data)

要更新现有模型,您可以调用更新(首选)或更改模型并调用保存。

例如:

Doc.update(set__VAR=Val, set__VAR2=Val2)

或者

setattr(Doc, 'VAR', val)
setattr(Doc, 'VAR2', val2)
Doc.save()

Doc.VAR = val
Doc.VAR2 = val2
Doc.save()

关于python - 如何从 json 更新 Mongoengine DynamicDocument,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15407202/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com