javascript - MongoDB 聚合框架 - 如何查询平均值

标签 javascript node.js mongodb express mongoose

如何使用聚合框架重写此 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/

相关文章:

javascript - 如何将日期选择器添加到网站?

javascript - 如何在ES6中导入 "old"ES5代码

javascript - 使用 GET 将数据 POST 到 Restful api

node.js - 由于 WebSocket 的 Nodejs 中的密度导致的套接字异常

node.js - 事件.js :183 throw er;//Unhandled 'error' event

node.js - 在 mongoDb 中打印查询结果

c++ - 将树数据结构转储到文件或从文件恢复树数据结构

javascript - jquery ui 自动完成的绝对路径

node.js - 加载后如何在 mongoose 子文档中使用 Schema 方法

MongoDB全文搜索与Lucene?