MongoEngine:在allow_inheritance之后文档消失

时间:2014-12-10 20:36:23

标签: mongodb mongoengine

我有一个之前不允许继承的MongoEngine文档。然后我想继承它,所以我设置了{allow_inheritance:True}。一旦我这样做,那么在调用<myModel>.objects时,该模型的现有文档就不再出现了。如果我暂时设置{allow_inheritance:False},那么文档会回来。为什么会这样?

我使用MongoEngine verison 0.8.7

1 个答案:

答案 0 :(得分:1)

想出来。使用allow_inheritance时,MongoEngine在基础文档中存储一个特殊的_cls字段,其中包含类或派生类的名称。因此,对于BaseClass,它会将"BaseClass"存储为值,而对于DerivedClass,它会将"BaseClass.DerivedClass"存储为值。但是,如果最初未设置allow_inheritance,则不会设置此特殊_cls字段。因此,在设置allow_inheritance之后,我必须手动(而不是通过mongoengine)进入mongo字段并执行update以添加_cls字段BaseClass值,然后文件再次出现。