TLDR;
Persamaan luwak adalah menjalankan kueri bertingkat terlebih dahulu, dan meneruskan hasilnya ke agregasi.
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);
});
Penjelasan
Saat menjalankan skrip berikut di mongo shell, yang terjadi adalah kueri dalam (berbeda) dikirimkan terlebih dahulu, dan kemudian hasilnya diteruskan ke kueri luar (agregasi) yang kemudian dikirimkan untuk dieksekusi. Ini dapat dikonfirmasi dengan menangkap jejak paket. Pada gambar terlampir, kita dapat melihat pengiriman permintaan pertama (paket 9) respons yang diterima (paket 10 dan 11), dan pengiriman kueri agregasi (paket 12 dan 13).