新版本的MongoDB允许全文搜索。这部分对我来说运行良好:
db.collection.runCommand('text',{search:<keyword>})
但是,我不确定是否有可能通过python的mongoengine运行它。有谁知道是否有办法使用 mongoengine 运行"runCommand"或解决方法?
(我在我的项目中使用 mongoengine,我不想为pymongo放弃它,因为这可能意味着重新编码很多东西。
谢谢!
你可以直接使用 pymongo 来使用 MongoEngine,例如:
class MyDoc(Document):
pass
coll = MyDoc._get_collection()
coll.database.command(
"text",
coll.name,
search="alice",
project={"name": 1, "_id": 0},
limit=10)
很旧,但我遇到了同样的问题。MongoEngine 现在可以直接启用文本搜索。
首先,在必填字段上创建文本索引:
class MyDoc(Document):
document_name = StringField()
document_content = StringField()
meta = {
'indexes': [
{
'fields': [
'$document_name',
'$document_content'
]
}
]
}
然后,可以使用search_text功能搜索文档:
document = News.objects.search_text('testing')
有关更多详细信息,MongoEngine 文本搜索文档。
> Pymongo为此使用了keyord参数。请参阅文档。
在你的情况下db.command('text', 'colection_name', seach='keyword')
.