TLDR;
Mongoose-motsvarigheten skulle vara att köra den kapslade frågan först och skicka resultaten till aggregeringen.
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);
});
Förklaring
När man kör följande skript i mongo-skal, händer det att den inre frågan (distinkt) skickas först, och sedan skickas resultatet till den yttre frågan (aggregation) som sedan skickas in för exekvering. Detta kan bekräftas genom att fånga ett paketspår. I de bifogade bilderna kan vi se den första inlämningen av frågan (paket 9) svaret som togs emot (paket 10 och 11) och inlämning av aggregeringsfrågan a> (paket 12 och 13).