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 - TypeScript/JavaScript 中的模块和命名空间有什么区别?

node.js - 如何使用 process.hrtime.bigint

node.js - 在 Schema 中保存 ObjectId 数组

arrays - MongoDB - 查询数组的最后一个元素?

JavaScript 将文本复制到剪贴板

javascript - 如何动态删除使用 JavaScript 动态创建的输入字段

javascript - HTTP JSON API SERVER 中的这段代码在 learnyounode 中起到了什么作用

node.js - NPM 7 - 将标志传递给脚本

node.js - MongooseJS - 如何保存文档和引用的文档

javascript - 如何将使用javascript制作的网站保存到文件中