来自here,
我需要使用from_json
更新现有的文档数据。
当我使用from_json
时
>> user = User.objects(pk=2).first()
>> print user.to_json()
以上显示
>> {"_id": 1, "_cls": "User", "name": "OldName"}
现在我更新了现有的user
对象
>> user = user.from_json(json.dumps({"_id": 1, "_cls": "User", "name": "NewName"}))
>> user.save()
>> print user.to_json()
显示
>> {"_id": 1, "_cls": "User", "name": "NewName"}
但它无法在DB中更新。
我再次查询它显示的user
>> {"_id": 1, "_cls": "User", "name": "OldName"}
我的问题是如何使用文档对象方法from_json
更新现有数据?
答案 0 :(得分:1)
我担心这是一个常见的问题,可能还没有解决,这是一个链接到MongoEngine的源代码,你可以搜索“from_json”,看看你是否可以通过弄清楚这个功能是什么来解决实际上在做:https://github.com/MongoEngine/mongoengine/blob/master/mongoengine/queryset/base.py;
对我来说,我只是遍历json数据的(key, value)
并通过以下方式手动设置:
Batman = User.objects.get('user_id'='blah')
data = {'username':'batman', 'password':'iLoveGotham'}
for (key, val) in data.items():
Batman[key] = val
Batman.save()
它有效,但希望from_json
函数可以实际工作,这样这个过程就会变得更加优雅。
答案 1 :(得分:1)
对我来说,以下工作有效:
user.update(**mydictname) #mydictname contains the dictionary of values I want to update
user.save()
user.reload() #not doing this makes the changes available only after the object is reloaded elsewhere
答案 2 :(得分:0)
如果您在Mongo Shell中搜索该文档,它是否会更新?如果没有,请停止阅读 here 。保存不会自动更新对象,但我认为如果您调用类似的内容:
>> user = user.from_json(json.dumps({"_id": 1, "_cls": "User", "name": "NewName"}))
>> user.save()
>> user.reload()
>> print user.to_json()
我自己学习Mongoengine,但这是一个很好的资源:http://docs.mongoengine.org/guide/