没有指定主键,无法更新文档



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)时,我才能更新DB,但如果我插入新数据,那么_id必须由我插入,而不是由MongoDB自动创建。

有人能帮我解决问题吗?谢谢

插入和更新是MongoDB中不同的操作:

  • Insert将文档添加到集合
  • Update在给定搜索条件的集合中查找文档,然后更改此文档

如果您还没有插入文档,尝试更新它将不会有任何作用,因为任何搜索条件都不会找到它。你的ODM正在向你指出这一点,并阻止你更新尚未保存的文档。使用驱动程序,您可以发布更新,但不会有任何效果。

如果要向数据库中添加新文档,请使用插入。若要更改已保存的文档,请使用更新。要在不保存文档实例的情况下更改字段,请参阅ODM文档,了解如何执行此操作,而不是尝试保存文档。

最新更新