Partage
  • Partager sur Facebook
  • Partager sur Twitter

[MongoDB] afficher et trier des collections

    13 mai 2021 à 19:42:21

    Bonjour à tous,

    j'ai un petit souci. Je voudrais afficher une liste d'album, trié par année avec le nom de l'artiste.

    J'utilise mongodb : j'ai une collection album et une collection artiste ...

    j'arrive à avoir une liste d'album (mais pas à trier sur l'année) et les informations de l'artiste (mais toutes les informations et pas seulement son nom).

    Voici le html :

    <!DOCTYPE html>
    <html lang="fr">
    <head>
        <meta charset="UTF-8">
        <link rel="stylesheet" href="{{ url_for('static', filename='style.css') }}">
        <title>Music</title>
    </head>
    <body>
        <div>
            <p>Voici la liste des artistes (pas encore triée) : </p>
            <ul>
                {% for album in albums %}
                <li>Album : {{album.nom}} / année de sortie : {{album.annee}} / 
                 nom de l'artiste : {{album.nameArtist}}</li>
                <!-- Eléments à afficher : nom de l’artiste, nom de l’album, année de sortie.  -->
                {% endfor %}
            </ul>
        </div>
    </body>
    </html>

    le python :

    @main.route('/albums')
    def albums():
        albums_collection = mongo.db.album
        pipeline = [
            {
                '$lookup': {
                    'from': 'artist',
                    'localField': 'artistId',
                    'foreignField': '_id',
                    'as': 'nameArtist'
                },
            }
        ]
        albums = albums_collection.aggregate(pipeline)
        return render_template('albums.html', albums=albums)
    

    et une capture écran de ce que ça rend

    Comme vous pouvez le voir l'agrégation fonctionne bien mais c'est pas tout à fait ce que je voudrais ...

    Une petite idée ?
    ==============================================

    Bon j'ai réussi à trier, mais toujours pas d'amélioration pour n'afficher que le nom de l'artiste.

    @main.route('/albums')
    def albums():
        albums_collection = mongo.db.album
        pipeline = [
            {
                '$lookup': {
                    'from': 'artist',
                    'localField': 'artistId',
                    'foreignField': '_id',
                    'as': 'nameArtist'
                }
            },
            {    
                '$sort': {"annee":1}
            }    
        ]
        albums = albums_collection.aggregate(pipeline)
        return render_template('albums.html', albums=albums)



    -
    Edité par Pitchounvivi 13 mai 2021 à 21:28:19

    • Partager sur Facebook
    • Partager sur Twitter

    [MongoDB] afficher et trier des collections

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
    • Editeur
    • Markdown