Node.js mongoose聚合:两个不同$group的相同$match

Node.js mongoose聚合:两个不同$group的相同$match,node.js,mongodb,mongoose,aggregation-framework,Node.js,Mongodb,Mongoose,Aggregation Framework,我想使用相同的过滤器执行两个聚合函数。我可以做到以下几点: // create first aggregate query var query1 = myModel.aggregate([ { $match: myMatchCriteria }, { $group1: myGroupCriteria1 } ]); // create second aggregate query var query2 = myModel.aggregate([ { $match: my

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

// 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);
但它似乎不是最优的:据我所知,$match在引擎盖下使用find(),因此我会为相同的输出查询我的数据库两次

有没有办法“保存”find()结果,然后对其应用聚合?比如:

var myFilteredDocuments = myModel.find(myMatchCriteria);

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

尝试
$out
管道阶段。它应该将您的结果保存到指定的集合中。将有一个新的运算符$facet在即将到来的version@Saleem谢谢,现在应该可以了。为了完成@profesor79评论,我找到了一些关于
$facet
的信息。它将完全满足我的需要。