7

mongoengineでは、ReferenceFieldにどの値を設定する必要があります。つまり、参照先のドキュメントの「ObjectId」で指定する必要があります。例えば、

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

クラスBarのオブジェクトには、「foo」属性で設定された値が必要です。'Foo'コレクション内のドキュメントのObjectIdである必要がありますか?また、他の一意のフィールドを、それがどのフィールドであるかを示す参照フィールドの値として設定できますか?

4

2 に答える 2

12

MongoEngineバージョン0.8より前では、デフォルトでDBRefが保存されます。0.8以降では、デフォルトでObjectIdを格納します。

dbrefReferenceFieldを作成するときに使用する必要のあるパラメーターがあります(明示的は暗黙的よりも優れています):

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

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)
于 2013-04-04T08:47:11.093 に答える
3

DBRefを格納します。必要なのは、Fooインスタンスを渡すだけで、自動的に変換されます。ドキュメントのセクションを参照してください:https ://mongoengine-odm.readthedocs.io/guide/defining-documents.html?highlight = referencefield

于 2012-08-08T19:28:25.803 に答える