使用 Mapfield 和 DynamicEmbeddedDocument 同时出现 InvalidDocumentError

2024-09-29 21:35:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个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))

我包含了DynamicEmbeddedDocument,因为键1和键2可以有额外的动态字段。你知道吗

我正在手动插入数据: 当使用model加载数据时,它抛出如下错误

你知道吗mongoengine.errors.InvalidDocumentError错误:创建Test实例的数据无效。你知道吗

我使用mongoengine作为python库。你知道吗

我需要一个正确的模型来支持这个数据结构。你知道吗


Tags: 数据key模型testk2k1oneclass
1条回答
网友
1楼 · 发布于 2024-09-29 21:35:38

据我所知,您不需要在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)

相关问题 更多 >

    热门问题