mongoengine- referencefield存储什么

时间:2012-08-08 16:24:27

标签: mongodb orm mongoengine

在mongoengine中,必须在ReferenceField中设置什么值。我的意思是我们应该提供" ObjectId"该文件的参考文件。 例如,

class Bar(Document):
    content = StringField()
    foo = ReferenceField('Foo')

类Bar的对象应该具有在" foo"中设置的值。属性。它应该是Foo'中某些文档的ObjectId吗?采集? 我还可以将任何其他唯一字段设置为参考字段中的值,提及它是哪个字段吗?

2 个答案:

答案 0 :(得分:11)

在MongoEngine版本0.8之前,它默认存储一个DBRef。对于0.8及更高版本,它默认存储一个ObjectId。

创建ReferenceField(explicit is better than implicit)时应该使用dbref参数:

class Bar(Document):
    content = StringField()
    foo = ReferenceField('Foo', dbref = True)   # will use a DBRef
    bar = ReferenceField('Bar', dbref = False)  # will use an ObjectId

这是documentation for the ReferenceField

我安装了0.7.9版,当我创建一个没有 dbref参数的ReferenceField 时,我收到以下警告:

[...]/lib/python2.7/site-packages/mongoengine/fields.py:744: FutureWarning:
ReferenceFields will default to using ObjectId  strings in 0.8, set DBRef=True
if this isn't desired
warnings.warn(msg, FutureWarning)

答案 1 :(得分:3)

它存储一个DBRef,你只需要传递一个Foo实例,它就会自动转换。请参阅文档中的部分:http://mongoengine-odm.readthedocs.org/en/latest/guide/defining-documents.html?highlight=referencefield