MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Comment passer une requête interne dans mongodb à partir de javascript

TLDR ;

L'équivalent mangouste serait d'exécuter d'abord la requête imbriquée et de transmettre les résultats à l'agrégation.

groups.distinct("p", {"enable": true}).exec().then(matchingGroups => {
    return users.aggregate([
        {$match: {"id": {$in: ["0", "1", "2"]}, p: {$in: matchingGroups}}},
        {$group:{_id:"$v", number:{$sum:1 }}}
    ]).exec();
}).then(aggregationResult => {
    console.log(aggregationResult);
});

Explication

Lors de l'exécution du script suivant dans mongo shell, ce qui se passe est que la requête interne (distincte) est soumise en premier, puis le résultat est transmis à la requête externe (agrégation) qui est ensuite soumise pour exécution. Cela peut être confirmé en capturant une trace de paquet. Dans les images ci-jointes, nous pouvons voir la première soumission de requête (paquet 9) la réponse reçue (paquets 10 et 11) et la soumission de la requête d'agrégation (paquets 12 et 13).