Sus*_*pta 7 orm mongodb mongoengine
在mongoengine中,必须将哪个值设置为ReferenceField.我的意思是我们应该提供要参考的文档的"ObjectId".例如,
class Bar(Document):
content = StringField()
foo = ReferenceField('Foo')
Run Code Online (Sandbox Code Playgroud)
类Bar的对象应该具有"foo"属性中设置的值.它应该是'Foo'集合中某些文档的ObjectId吗?我还可以将任何其他唯一字段设置为引用字段中的值,提及它是哪个字段?
Min*_*ark 11
在MongoEngine版本0.8之前,它默认存储DBRef.对于0.8及更高版本,它默认存储ObjectId.
dbref创建ReferenceField时应该使用一个参数(显式优于隐式):
class Bar(Document):
content = StringField()
foo = ReferenceField('Foo', dbref = True) # will use a DBRef
bar = ReferenceField('Bar', dbref = False) # will use an ObjectId
Run Code Online (Sandbox Code Playgroud)
这是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)
Run Code Online (Sandbox Code Playgroud)
它存储了一个DBRef,你只需要传递一个Foo实例,它就会自动转换。请参阅文档中的部分:https://mongoengine-odm.readthedocs.io/guide/defining-documents.html ?highlight=referencefield