mongoengine-什么是referencefield商店

问题描述:

在mongoengine中,必须在ReferenceField中设置什么值。我的意思是我们应该在提供引用的文档的“ObjectId”中提供。 例如,mongoengine-什么是referencefield商店

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

类酒吧的对象应该具有在“foo”的属性是什么值设置为。它应该是'Foo'集合中某个文档的ObjectId吗? 我也可以设置任何其他唯一字段作为参考字段中的值提及它是哪个字段?

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

+0

感谢队友,我想他们已经更新了他们的文档的0.6版0.20。我正在使用0.6.18,但我会更新它0.6.20非常感谢帮助朋友。 – 2012-08-10 03:14:28

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

有一个dbref参数创建ReferenceField(explicit is better than implicit)时,应使用:

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安装,当我创建一个ReferenceField 没有dbref参数,我得到以下警告:

[...]/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) 
+0

好的,感谢您的更新朋友:) – 2013-04-04 10:18:33