2017-08-30 57 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

谢谢,它解决了我的问题。 –