TLDR;
Het mangoest-equivalent zou zijn om eerst de geneste zoekopdracht uit te voeren en de resultaten door te geven aan de aggregatie.
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);
});
Uitleg
Bij het uitvoeren van het volgende script in de mongo-shell, gebeurt het dat eerst de innerlijke query (distinct) wordt ingediend en vervolgens wordt het resultaat doorgegeven aan de buitenste query (aggregatie) die vervolgens wordt ingediend voor uitvoering. Dit kan worden bevestigd door een pakkettracering vast te leggen. In de bijgevoegde afbeeldingen kunnen we de eerste indiening van de zoekopdracht zien (pakket 9) het ontvangen antwoord (pakketten 10 en 11), en de verzending van de aggregatiequery (pakketten 12 en 13).