J'ai un mongoDB avec une collection nommée Films à l'intérieur de la collection, j'ai stocké des informations comme ceci : entrez la description de l'image ici

J'ai aussi un html et je veux juste afficher le titre :

<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)

Quand j'essaye ça, j'obtiens tout sur la Collection et pas seulement le titre que je veux.

Au lieu du titre j'obtiens ceci : {'_id' : ObjectId('5f525e1328638ac98f69c936'), 'title' : 'Endgame', 'releaseDate' : '26 April 2019', 'info' : "Après les événements dévastateurs d'Avengers : Infinity War (2018) , l'univers est en ruines. Avec l'aide des alliés restants, les Avengers se rassemblent une fois de plus afin d'inverser les actions de Thanos et de rétablir l'équilibre de l'univers. ", 'ticketDate': '10/10/20 - 17:00' }

Comment conserver le titre uniquement ?

-1
Λευτέρης Φωτεινάτος 4 sept. 2020 à 19:52

1 réponse

Meilleure réponse

Eh bien, parce que vous récupérez un dict, vous pouvez simplement convertir votre code en :

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

Une autre chose que vous pouvez faire est de spécifier projection afin d'obtenir uniquement les champs que vous souhaitez (ce qui prendra moins de bande passante et sera théoriquement plus rapide). Cela ressemblerait à ceci :

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

Notez que vous obtenez toujours un dict et que vous devez mettre _id à false car par défaut, _id est toujours renvoyé.

1
Dori Lahav Waisberg 4 sept. 2020 à 19:41