3

新版本的 MongoDB 允许全文搜索。那部分对我来说运行良好:

db.collection.runCommand('text',{search:<keyword>})

但是,我不确定是否可以通过 python 的 mongoengine 运行它。有谁知道是否有办法使用 mongoengine 或解决方法运行“runCommand”?

(我在我的项目中使用 mongoengine,我不想为 pymongo 放弃它,因为这可能意味着重新编码很多东西。)

谢谢!

4

3 回答 3

4

您可以通过直接使用 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)
于 2013-10-22T13:01:35.707 回答
1

这个问题很老,但我碰到了同样的问题。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 文本搜索文档以获取更多详细信息。

于 2021-12-10T14:32:40.810 回答
0

Pymongo 为此使用 keyord 参数。请参阅文档
在你的情况下db.command('text', 'colection_name', seach='keyword')

于 2013-10-18T12:21:10.657 回答