我有一个完整的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文档,但是我没有尝试过,因此很感谢任何人的帮助
答案 0 :(得分:0)
从外观上,您可能还需要将$regex
键用引号引起来:
data = list(posts.find({Tweet: {"$regex": input}}))