mongoengine- referencefield存储什么

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)


Ros*_*oss 3

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