在Mongo引擎中从另一个嵌入式文档访问嵌入式文档的方法

3

我有一个使用Mongo Engine存储的文档,其中包含一个嵌套文档。以下是我的模型:

class Problem(EmbeddedDocument):
    id = ObjectId()

class Result(EmbeddedDocument):
    problem = ReferenceField('Problem')

class Contest(Document):
    problem = EmbeddedDocumentField(Problem)

现在我想从Result模型中访问一个Problem。我该怎么做?

1
你能否解释一下你的数据结构最终应该是什么样子?我认为可能存在一些重复信息,将嵌入式文档和对文档的引用混合在一起。 - albert
1个回答

2
EmbeddedDocumentDocument之间的根本区别在于,EmbeddedDocument只存在于Document内部。

EmbeddedDocument是一个Document,但不会存储在自己的集合中。应该通过EmbeddedDocumentField字段类型将EmbeddedDocuments用作文档上的字段。

因此,EmbeddedDocument不能有主键,EmbeddedDocument只是文档内部的字典。详见文档 id = ObjectId()不是字段声明。所有可能的字段都列在这里。要声明主键字段,需要在字段参数中使用primary_key=Trueproblem = ReferenceField('Problem') EmbeddedDocument无法被引用,因为它不是字段。因此,声明嵌入式字段的正确方式如下:problem = EmbeddedDocumentField(Problem)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接