在MongoEngine中更新DictField?

时间:2014-01-16 09:33:47

标签: mongodb dictionary mongoengine

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

我尝试过使用:

Lookups.objects(pk="52d3a8e318fbaf0e1075de4f").update(push__schools=new_schools)

但我认为这不起作用的原因是因为push是将项目添加到列表而不是dict。有人可以帮帮我吗?

1 个答案:

答案 0 :(得分:4)

你应该使用$ set例如:

Lookups.objects(pk="52d3a8e318fbaf0e1075de4f").update(set__schools__KEY=VALUE)

<强>更新

如果你想设置多个键,那么你可以:

Lookups.objects(pk=x).update(set__schools__KEY=VALUE, set__schools__KEY1=VALUE1)

获取键和值的字典 - 您可以转换为新的字典并更新如下:

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)