pymodm或mongoengine中的嵌套文档模型可在Django中工作

时间:2019-07-12 10:32:10

标签: django mongodb django-models mongoengine pymodm

我有一种特定的JSON,我需要将其编码为Django问题的模型。问题是我在其中嵌套了文档,还是应该说对象的对象,却不知道如何在Pymodm或Mongoengine中设计模型。

这是我正在使用的JSON模式。

{
    "something": "something",
    "safasf": 5,
    "key": {
        "value1": ["dsd", "dd"],
        "value2": {
            "blah1": "blahvalue1",
            "blah2": "blahvalue2"
        }
    }
}

我已经研究了这两个ODM的文档和API参考。我找不到任何有用的东西。充其量它们具有 fields.EmbeddedDocumentListField ,用于存储文档/对象的列表。

1 个答案:

答案 0 :(得分:0)

您的示例json毫无意义,但这是如何使用mongoengine对其建模的示例

from mongoengine import *

class MyNestedDoc(EmbeddedDocument):
    value1 = ListField(StringField())
    value2 = DictField(StringField())

class MyDocument(Document):
    something = StringField()
    safasf = IntField()
    key = EmbeddedDocumentField(MyNestedDoc)


nested_doc = MyNestedDoc(
    value1=["dsd", "dd"],
    value2={
        "blah1": "blahvalue1",
        "blah2": "blahvalue2"
    }
)
doc = MyDocument(something="something", safasf=5, key=nested_doc)
doc.save()

这将在Mongo中保存具有以下形状的对象

{'_id': ObjectId('5d2d832c96d2914c2a32c1b3'),
 'key': {
  'value1': ['dsd', 'dd'],
  'value2': {
    'blah1': 'blahvalue1',
    'blah2': 'blahvalue2'
    }
  },
 'safasf': 5,
 'something': 'something'
}