在mongoengine中,必须在ReferenceField中设置什么值。我的意思是我们应该提供" ObjectId"该文件的参考文件。 例如,
class Bar(Document):
content = StringField()
foo = ReferenceField('Foo')
类Bar的对象应该具有在" foo"中设置的值。属性。它应该是Foo'中某些文档的ObjectId吗?采集? 我还可以将任何其他唯一字段设置为参考字段中的值,提及它是哪个字段吗?
答案 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