2016-04-26 2 views
0
class Tag(db.Document): 
    text = db.StringField(unique=True) 

class Post(db.Document): 
    user = db.ReferenceField(User, required=True) 
    pid = db.SequenceField(required=True, unique=True) 
    description = db.StringField() 
    title = db.StringField(required=True) 
    created = db.DateTimeField(default=utils.time_now, required=True) 
    updated = db.DateTimeField(default=utils.time_now, required=True) 
    tags = db.ListField(db.ReferenceField(Tag), default=[]) 
    ratings = db.EmbeddedDocumentListField(Rating, default=[]) 
    comments = db.EmbeddedDocumentListField(Comment, default=[]) 
    url = db.URLField() 

    meta = {'indexes': [ 
     {'fields': ['$title', '$description', '$tags.text'], 
     'default_language': 'english', 
     'weights': {'title': 10, 'description': 5, 'tags': 2} 
     } 
    ]} 

Вот мои два документа. Документ тега ссылается в поле списка документа Post. Когда я пытаюсь выполнить поиск с помощью текстового индекса, я могу успешно выполнить поиск по названию и описанию, но не по тегам. Кто-нибудь знает, почему. Я не нашел здесь никаких полезных примеров. http://docs.mongoengine.org/guide/text-indexes.htmlMongoEngine ReferenceField Text Index setup?

ответ

0

Тип ReferenceField только ограничен ссылкой на доступ к некоторой внутренней магии MongoEngine. Таким образом, вы не можете использовать его как элемент в текстовом индексе (список, сохраненный в документе mongodb, будет содержать только ссылки Bson ObjectId).

Смежные вопросы