在 MongoEngine 中更新 DictField?

Ren*_*ier 2 dictionary mongodb mongoengine

如何将数据添加到 mongoengine 的字典中?
我没有再次保存整个字典的数据,我一次只想添加一个项目。

我试过使用:

Lookups.objects(pk="52d3a8e318fbaf0e1075de4f").update(push__schools=new_schools)
Run Code Online (Sandbox Code Playgroud)

但我认为这不起作用的原因push是将项目添加到列表,而不是字典。谁能帮帮我吗?

Ros*_*oss 6

你应该使用 $set 例如:

Lookups.objects(pk="52d3a8e318fbaf0e1075de4f").update(set__schools__KEY=VALUE)
Run Code Online (Sandbox Code Playgroud)

更新:

如果要设置多个键,则可以例如:

Lookups.objects(pk=x).update(set__schools__KEY=VALUE, set__schools__KEY1=VALUE1)
Run Code Online (Sandbox Code Playgroud)

获取键和值的字典 - 您可以转换为新的字典并像这样更新:

new_schools = {"key1": "value1", "key2": "value2"}
set_new_schools = dict((("set__schools_%s" % k, v) for k,v in new_schools.iteritems()))
Lookups.objects(pk=x).update(**set_new_schools)
Run Code Online (Sandbox Code Playgroud)