mongoose aggregate:相同的$匹配两个不同的$ group

时间:2016-09-02 16:59:17

标签: 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: 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 }])

0 个答案:

没有答案