2017-08-30 54 views
1

我想爲ReferenceField創建索引,以便查詢可以工作更快速地創建索引,但我不知道如何與mongoengine做到這一點通過定義在類meta屬性:如何爲ReferenceField mongoengine

這裏的在Post文件的代碼,我已經寫了:

class Post(Document): 
    slug = StringField(max_length=60, required=True) 
    content = StringField(required=True) 
    user_id = ReferenceField(document_type='User', dbref=True, required=True) 
    published_at = DateTimeField(default=datetime.now, required=True) 
    updated_at = DateTimeField(default=datetime.now, required=True) 

    meta = { 
    'collection': 'social_posts', 
    'indexes': [ 
     'user_id.$id' 
    ] 
    } 

當我試圖爲user_id.$id這是方式ReferenceField存儲在mongodb創建索引,拋出下面的錯誤:

mongoengine.errors.LookUpError: Cannot perform join in mongoDB: user_id__$id 

回答

1

要創建mongoengine中ReferenceField的索引,只需指定字段的名稱 - 不帶後綴.$id

所以,你的代碼將是這樣的:

meta = { 
'collection': 'social_posts', 
'indexes': [ 
    'user_id' 
] 
} 

Mongoengine自動引用的ID創建索引,哪怕是一個DBREF。

+0

謝謝,它解決了我的問題。 –