2014-03-30 116 views
0

我如何重寫使用聚合框架返回的平均price在提供date範圍之間的下列型號此MongoDB的查詢:MongoDB的聚合框架 - 如何查詢的平均

型號

var PriceSchema = new Schema({ 
    price: { 
     type: Number, 
     required: true 
    }, 
    date: { 
     type: Date, 
     required: true 
    } 
}; 

查詢

exports.getPriceAverage = function(req, res, next) { 
    var start  = moment.utc('03-01-2012').startOf('day'); 
    var end   = moment.utc('03-01-2012').endOf('month') 

    // Aggregation Framework Query Here... 
    Price.find({ date: { $lt: end, $gt: start }}, function(err, priceAverage) { 
     // Return average price... 
    }); 
}; 

回答

2

您提到使用聚合,但您使用的是將所有結果返回給客戶端的find函數。

相反,你需要使用aggregate$avg

Price.aggregate([ 
    { $match: { date: { $lt: end, $gt: start } } }, 
    { $group: { _id: null, avgPrice: { $avg: '$price' } } } 

], function(err, results){ 
    // process the results (an array of JavaScript objects) 
});