mongoose聚合:两个不同的$组相同的$匹配

我想使用相同的filter执行两个聚合函数。 我可以做到以下几点:

// create first aggregate query var query1 = myModel.aggregate([ { $match: myMatchCriteria }, { $group1: myGroupCriteria1 } ]); // create second aggregate query var query2 = myModel.aggregate([ { $match: myMatchCriteria }, { $group2: myGroupCriteria2 } ]); // execute both queries query1.exec(myCallback); query2.exec(myCallback); 

但它似乎并不理想:据我所知,$匹配使用find(),所以我会查询我的数据库两次相同的输出。

有没有办法“保存”find()结果,然后将聚合应用到它们? 就像是:

 var myFilteredDocuments = myModel.find(myMatchCriteria); var query1 = myFilteredDocuments.aggregate([{ $group2: myGroupCriteria1 }]), query2 = myFilteredDocuments.aggregate([{ $group2: myGroupCriteria2 }])