查询每小时所有记录的数据库

时间:2017-03-26 11:22:04

标签: javascript sql node.js date datetime

我有一个数据库,每分钟存储一次温度快照。我有一个API端点,用于填充每小时历史温度条形图。目前,我创建了一个24小时的小时数组作为UNIX时间戳,逻辑然后如下所示:

db.Temperature.aggregate('value', 'AVG', {
    where: {
        createdAt: {
            $lt: start,// new Date(UnixStartTime + 3600000) end of the hour for a given start point
            $gt: end// new Date(UnixStartTime)
        },
    },
});

这个问题当然是如果我在11:30进行查询,那么11点读数实际上是10:30 to 11:30的所有内容,它应该是11:00 to 11:30和之前的值应该是10:00 to 11:00

如何修复此逻辑,使得返回的值实际上来自正确的小时数?

1 个答案:

答案 0 :(得分:0)

我认为你应该将$ aggregate包装成一个cron作业。这就是重复任务的完成方式,完全取决于您希望完成的任务。每天每小时都有一个cron作业查询。

两个NPM模块都非常出色:

node-cron

cron

使用它们相当容易。只需按照他们使用的日期和时间结构,将您的函数包装到cron作业中。

这将是cron

中的结构
var CronJob = require('cron').CronJob;
var job = new CronJob('00 00 00 * * *', function() {
    \\do your stuff here
}

配备Timezones并立即启动cron的能力。