Поиск записей MongoDB, содержащих определенную строку - PullRequest
0 голосов
/ 30 апреля 2019

У меня есть база данных MongoDB, заполненная твитами, которые я собрал с помощью tweepy API, и я хочу иметь возможность искать в веб-приложении хэштег, и он показывает твиты, содержащие этот хэштег.

В настоящее время я создал список с записями в БД и перебираю этот список, чтобы отобразить их все, но теперь я хочу уточнить поиск, чтобы пользователь мог выбирать, что он видит.У меня есть поиск пользователей, сохраненный в переменной, и я попробовал следующие идеи, но ни одна из них, похоже, не работает.

Моей первой идеей было просто передать переменную и надеяться на лучшее

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

сообщение об ошибке, которое я получаю, гласит:

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

Я никогда не работал с MongoDB илииспользовал регулярные выражения, так что я в полной растерянности здесь.Я просмотрел документы по монго, но ничего из того, что я пробовал, не работает, поэтому любая помощь от кого-либо будет принята с благодарностью

1 Ответ

0 голосов
/ 30 апреля 2019

Судя по всему, вам может понадобиться заключить в кавычки и клавишу $regex:

data = list(posts.find({Tweet: {"$regex": input}})) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...