查找包含特定值的文档 - Mongo,Python

时间:2016-09-25 03:31:29

标签: python mongodb

我正在尝试向我的网站添加搜索选项,但它不起作用。我查找了解决方案,但它们都指的是使用实际的字符串,而在我的情况下,我使用的是变量,而我无法使这些解决方案起作用。这是我的代码:

cursor = source.find({'title': search_term}).limit(25)
for document in cursor:
    result_list.append(document)

不幸的是,这只会返回与search_term变量的值完全匹配的结果。我希望它返回标题包含搜索词的任何结果 - 无论它包含什么其他字符串。如果我想将变量传递给它,而不是实际的字符串,我该怎么办呢?感谢。

2 个答案:

答案 0 :(得分:1)

您可以使用$regex执行包含搜索。

cursor = collection.find({'field': {'$regex':'regular expression'}})

并使其不区分大小写:

cursor = collection.find({'field': {'$regex':'regular expression', '$options'‌​:'i'}})

请尝试cursor = source.find({'title': {'$regex':search_term}}).limit(25)

答案 1 :(得分:0)

$文本

您可以使用$text&进行文字搜索。 $search。首先需要设置文本索引,然后使用它:

$ db.docs.createIndex( { title: "text" } )
$ db.docs.find( { $text: { $search: "search_term" } } )

$正则表达式

您也可以使用$regex,如下所示:https://stackoverflow.com/a/10616781/641627

$ db.users.findOne({"username" : {$regex : ".*son.*"}});

两种解决方案都进行了比较

  

...对于只有a的查询,正则表达式搜索需要更长时间   在全文搜索变得更快且清晰的情况下,几乎没有结果   在那些情况下优越。

相关问题