Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    juillet 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : juillet 2016
    Messages : 2
    Points : 2
    Points
    2

    Par défaut [MongoDB] Sous requête

    Bonjour,
    Dans le cadre d’un cours de base de données, je dois réaliser une requête avec MongoDB sur une collection comportant une liste de films avec chacun une liste d’acteurs, la requête étant la suivante :
    Recuperer le "title" et les "actors" des films dans lesquels joue un(e) (au moins) acteur(rice) ayant comme initiales C C
    output schema: {title: ..., actors: ...}
    Seulement, ces initiales doivent être celles du premier et du dernier nom d’un acteur (sans prendre en compte les nom intermédiaires/composés donc). J’ai réussi une requête en utilisant du JS :
    Code js : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    var tab = [];
    db.movieDetails.aggregate( [ 
        { 
            $unwind : "$actors" 
        },{
            $project: {
                names : {
                    $split : ["$actors", " "]
                },
                title : 1,
                actors : 1
            }
        },{
            $project: {
                firstname : {
                     $arrayElemAt : ["$names",0]
                },
                lastname : {
                     $arrayElemAt : ["$names",-1]
                },
                actors : 1,
                title : 1
            }
        },{
            $match : {
                firstname : /^C.*/,
                lastname : /^C.*/
            }
        },{
            $group : {
                _id : "$_id"
            }
        }
    ] ).forEach(function(myDoc){
        tab.push(myDoc._id);
    })
     
    db.movieDetails.find({
        _id : {$in : tab}
    },{
        _id : 0,
        title : 1,
        actors : 1
    })

    Seulement nous devons réaliser cette requête en une seule étape (pas de query intermédiaire).
    Quelqu’un saurait il comment faire ? Cela fait un bon moment que je suis bloqué là-dessus.

    Merci à tous
    Images attachées Images attachées  

  2. #2
    Membre émérite
    Inscrit en
    octobre 2011
    Messages
    1 325
    Détails du profil
    Informations forums :
    Inscription : octobre 2011
    Messages : 1 325
    Points : 2 332
    Points
    2 332

    Par défaut

    Seulement nous devons réaliser cette requête en une seule étape (pas de query intermédiaire).
    Quelqu’un saurait il comment faire ? Cela fait un bon moment que je suis bloqué là-dessus.
    Cet exercice devrait pour l'idée de faire travailler les gens qui prennent le cours de se familiariser la requête $where qui prend une fonction pleine de javascript avec toute sa puissance. On devrait faire une effort d'améliorer tant que possible le sous-optimisme par nature de requête $where dans .find() par rapport à la requête d'aggregate. Je dirais regarder-y.

Discussions similaires

  1. [MFC] [API mySQL] Sous requêtes
    Par Guybrush113 dans le forum MFC
    Réponses: 5
    Dernier message: 29/04/2004, 16h14
  2. Problème DBExpress et sous requêtes ???
    Par Trulane dans le forum Bases de données
    Réponses: 5
    Dernier message: 26/03/2004, 14h40
  3. Requêtes et sous requêtes
    Par lau2nyce dans le forum Langage SQL
    Réponses: 3
    Dernier message: 23/03/2004, 15h14
  4. suppression avec sous requête conditionnelle
    Par melmel dans le forum Requêtes
    Réponses: 8
    Dernier message: 18/03/2004, 23h20
  5. Réponses: 3
    Dernier message: 18/05/2003, 00h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo