过滤pymongo中的textSearch

时间:2014-09-23 08:06:11

标签: python mongodb pymongo

有没有办法在pymongo中过滤textsearch的结果。我有一个光标:

db.models.find(
            {'$text': {'$search': 'some_word'}},
            {'score': {'$meta': 'textScore'}})

但这会搜索整个集合,我只想搜索某些字段上具有特定值的特定文档。

类似的东西:

db.models.find(
                {'$text': {'$search': 'some_word'}},
                {'score': {'$meta': 'textScore'}}
                {'$filter: {'field1': 'some_value'}}) `// this doesn't work`

我只希望文字搜索能够搜索具有“some_value”的文档。在field1上

1 个答案:

答案 0 :(得分:0)

它不搜索整个集合。它使用文本索引。文本索引将$search中的词干术语与索引中的术语相匹配,这些术语准确指出哪些文档包含这些术语。它不扫描每个文档以查看哪个匹配。您可以对文本匹配应用其他条件,如下所示:

> db.models.find({ "$text" : { "$search" : "some_word" }, "field1" : "some_value" })