Pymongo如何使用全文搜索

Bri*_*ill 3 python mongodb pymongo

我希望使用pymongo在我的python应用程序中实现全文搜索.我一直在看这个问题,但由于某种原因,我无法在我的项目中实现这个,因为我收到了一个错误no such cmd: text.任何人都可以指导我做错了吗?

这是我的代码:

db = client.test
collection = db.videos
def search_for_videos(self, search_text)
    self.db.command("text", "videos", 
            search=search_text, 
            limit=10)
Run Code Online (Sandbox Code Playgroud)

我试图搜索的集合被调用videos但是我不确定我是否将它放在正确的参数中,我也不确定我是否需要该行project={"name": 1, "_id": 0}.

我相信这里的文档是使用mongo shell来执行命令,但我希望在我的代码中执行此操作.

我已经看过使用该db.videos.find()函数,但似乎也无法正确实现它.

如何从我的Python代码中使用PyMongo全文搜索?

小智 11

首先要确保您在此处提到的字段上创建了文本索引,或者您也可以使用pymongo执行此操作:

collection.create_index([('your field', 'text')])
Run Code Online (Sandbox Code Playgroud)

使用pymongo你可以这样做来搜索:

collection.find({"$text": {"$search": your search}})
Run Code Online (Sandbox Code Playgroud)

你的功能应该是这样的:

def search_for_videos(search_text):
    collection.find({"$text": {"$search": search_text}}).limit(10)
Run Code Online (Sandbox Code Playgroud)

我希望这可以帮助你.