python - 一起使用 Mapfield 和 DynamicEmbeddedDocument 时出现 InvalidDocumentError

标签 python mongodb mongoengine graphene-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,因为 key_1 和 key_2 可以有额外的动态字段。

我正在手动插入数据: 使用模型加载数据时会抛出如下错误

mongoengine.errors.InvalidDocumentError:创建 Test 实例的无效数据。

我正在使用 mongoengine 作为 python 库。

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

最佳答案

据我所知,您不需要将 EmbeddedDocumentField 包装在 MapField 中,请尝试以下操作:

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)

关于python - 一起使用 Mapfield 和 DynamicEmbeddedDocument 时出现 InvalidDocumentError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56579345/

相关文章:

c# - 无法为对象设置自定义鉴别器约定

mongodb - 根据条件进行分组和计数

python - 如何使用 python 的 mongoengine 检索不同集合中的记录?

python - 如何在大叶上使用基于颜色的 PolyLine

Python正则表达式捕获单个字符字母

python - 如何遍历字典并返回 Python 中的键?

java - 如何在 Spring Data MongoDB 中使用乐观锁定?

django - 直接在django中使用pymongo

python - 如何在Python脚本中编写查询

python - 谷歌云数据存储: Are its App Engine Libraries usable on Compute Engine?