сохранить одну переменную из MongoDB в переменную в flask

#python #mongodb #api #flask #flask-pymongo

#python #mongodb #API #flask #flask-pymongo

Вопрос:

У меня есть MongoDB с коллекцией под названием Фильмы, внутри коллекции я сохранил некоторую информацию, подобную этой: введите описание изображения здесь

У меня также есть html, и я просто хочу отобразить заголовок:

 <h3>{{ title}}</h3>
  
 to do that I run this code:
@app.route("/movieInfo")
def movieInfo():

    title = db.db.Movies.find_one({"title": "Endgame"})
    ticketDate = "10/10/20 17:00"

    return render_template("movieInfo.html", title=title)
  

когда я пытаюсь это сделать, я получаю все в коллекции, а не только заголовок, который я хочу.

вместо заголовка я получаю это: {‘_id’: ObjectId(‘5f525e1328638ac98f69c936’), ‘title’: ‘Endgame’, ‘ReleaseDate’: ’26 апреля 2019′, ‘info’: «После разрушительных событий Avengers: Infinity War (2018) вселенная находится в руинах. С помощью оставшихся союзников Мстители собираются еще раз, чтобы обратить вспять действия Таноса и восстановить баланс во вселенной.», ‘ticketDate’: ’10/10/20 — 17:00′}

Как мне сохранить только заголовок?

Ответ №1:

Ну, поскольку вы получаете обратно dict, вы можете просто преобразовать свой код в:

 movie = db.db.Movies.find_one({'title': 'Endgame'})
title = movie.get('title')
  

Еще одна вещь, которую вы можете сделать, это указать projection , чтобы получать только те поля, которые вы хотите (что займет меньше пропускной способности и теоретически будет быстрее).
Это будет выглядеть так:

 movie = db.db.Movies.find_one({'title': 'Endgame'}, projection={'title': True, '_id': False})
title = movie.get('title')
  

Обратите внимание, что вы все равно получаете обратно dict, и вам нужно поставить _id значение false, потому что по умолчанию всегда возвращается _id.