问题描述
schema.py:
class Test(Document):
_id = StringField()
classID = StringField(required=True,unique=True)
status = StringField()
====================
database.py:
query = schema.Test(_id = id)
query.update(status = "confirm")
发生严重错误。尝试更新尚未保存的文档
仅当我指定 _id = StringField(primary_key=True) 时,我才能更新数据库,但是如果我插入新数据,_id 必须由我插入,而不是由 MongoDB 自动创建。
有人可以帮我解决问题吗? 谢谢!
解决方法
插入和更新在 MongoDB 中是不同的操作:
- 插入将文档添加到集合中
- 更新在给定搜索条件的集合中查找文档,然后更改此文档
如果您尚未插入文档,尝试更新它不会有任何作用,因为任何搜索条件都无法找到它。您的 ODM 向您指出了这一点,并阻止您更新尚未保存的文档。使用驱动程序,您无论如何都可以发布更新,但不会产生任何影响。
如果要向数据库添加新文档,请使用插入。要更改已保存的文档,请使用更新。要更改文档实例上的字段而不保存它们,请查阅您的 ODM 文档以了解如何执行此操作,而不是尝试保存文档。