搜索包含特定字符串的

时间:2019-04-30 15:03:03

标签: mongodb flask

我有一个完整的MongoDB数据库,该数据库充满了我使用tweepy API收集的推文,并且我希望能够在Web应用程序上搜索井号,并显示包含该井号的推文。

当前,我创建了一个包含DB记录的列表,并遍历该列表以显示所有记录,但是现在我想优化搜索,以便用户可以选择他们看到的内容。我已经将用户搜索保存到变量中,并且尝试了以下方法,但似乎没有用。

我的第一个想法是只传递变量并希望获得最佳结果

def display():
    input = request.form['input']  # setting variable for user input
    # Set up Mongo Client
    client = MongoClient("mongo.user/pass")
    # Accessing database
    db = client.tweets
    # acessing a collection
    posts = db.posts

    data = list(posts.find(input))
    return render_template('results.html', posts_info=data)

有了这个,我得到一个TypeError,我有点期待,因为我不希望它这么简单

在线阅读后,我尝试使用正则表达式。

def display():
    input = request.form['input']  # setting variable for user input
    # Set up Mongo Client
    client = MongoClient("mongo.user/pass")
    # Accessing database
    db = client.tweets
    # acessing a collection
    posts = db.posts

    data = list(posts.find({Tweet: {$regex: input}}))
    return render_template('results.html', posts_info=data)

这也不起作用,所以我尝试对正则表达式进行硬编码,以查看是否是用户输入变量造成了问题

def display():
    input = request.form['input']  # setting variable for user input
    # Set up Mongo Client
    client = MongoClient("mongo.user/pass")
    # Accessing database
    db = client.tweets
    # acessing a collection
    posts = db.posts

    data = list(posts.find({Tweet: {$regex: "GoT"}}))
    return render_template('results.html', posts_info=data)

使用这两种方法时,我在regex表达式的开头出现语法错误,并在$之前标记regex

我收到的错误消息是:

File "pathToWebApp/webApp.py", line 71 
data = list(posts.find({Tweet: {$regex: input}})) 
                                ^ 
SyntaxError: invalid syntax

我从未使用过MongoDB或使用过正则表达式,所以我在这里完全不知所措。我已经搜索过mongo文档,但是我没有尝试过,因此很感谢任何人的帮助

1 个答案:

答案 0 :(得分:0)

从外观上,您可能还需要将$regex键用引号引起来:

data = list(posts.find({Tweet: {"$regex": input}}))