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}
}
]}
这是我的两份文件。 Tag文档在Post文档的Listfield中引用。当我尝试使用文本索引进行搜索时,我可以成功搜索标题和描述,但不能搜索标签。有谁知道为什么。我在http://docs.mongoengine.org/guide/text-indexes.html
找不到任何有用的例子答案 0 :(得分:0)
ReferenceField类型仅在某些内部MongoEngine魔法访问时被取消引用。因此,您不能将它用作文本索引中的元素(保存在mongodb文档中的列表将仅包含bson ObjectId引用)。