如何使用聚合框架重写此 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...
});
};
最佳答案
您提到使用聚合,但您使用的是 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)
});
关于javascript - MongoDB 聚合框架 - 如何查询平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22742199/