我有一个Mongo模式数据:
{
"key_1":{"internal_k1":"internal_v1","internal_k2":"internal_v2"},
"key_2":{"internal_k3":"internal_v3","internal_k4":"internal_v4"},
}
以及Mongoengine模型:
class ONE(DynamicEmbeddedDocument):
internal_k1 = StringField()
internal_k2 = StringField()
class TWO(DynamicEmbeddedDocument):
internal_k3 = StringField()
internal_k4 = StringField()
class Test(Document):
key_1 = MapField(EmbeddedDocumentField(ONE))
key_2 = MapField(EmbeddedDocumentField(TWO))
我包含了dynamicmbeddeddocument,因为key_1和key_2可以有额外的动态字段。
我正在手动插入数据:
当使用model加载数据时,它抛出如下错误
mongoengine.errors.invaliddocumenterror:创建
Test
实例的数据无效。我使用mongoengine作为python库。
我需要一个正确的模型来支持这个数据结构。
最佳答案
据我所见,您不需要在mapfield中包装embeddeddocumentfield,请尝试以下操作:
class ONE(DynamicEmbeddedDocument):
internal_k1 = StringField()
internal_k2 = StringField()
class TWO(DynamicEmbeddedDocument):
internal_k3 = StringField()
internal_k4 = StringField()
class Test(Document):
key_1 = EmbeddedDocumentField(ONE)
key_2 = EmbeddedDocumentField(TWO)