#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.