У меня есть следующие схемы в MongoDB, где метка времени на почасовой уровнеMongoDB получить lastHour за каждый день
{
"day_chan1" : 54.464,
"day_chan2" : 44.141,
"day_chan3" : 44.89,
"gatewayId" : "443719005AA3",
"timestamp" : ISODate("2016-02-15T23:00:00.000Z"),
"total_curr_chan" : 5.408,
"total_day_chan" : 143.495,
"type" : 1
}
Я хочу, чтобы иметь возможность запросить последнюю метку времени в течение дня для последнего 7 дней и 30 дней. Для того, чтобы сделать это, я имею в виду сделать что-то вроде
var d = new Date(); // today!
for(var i =1; i <= 7; i++) {
var n = i; // go back n days!
d.setDate(d.getDate() - n);
d.setHours(23,0,0);
var query = {
gatewayId: req.params.deviceId,
timestamp: { $lt: new Date(d) }
};
db
.find(query,function(resp) {
//return the data here
});
}
Но это создает проблему множественных обратных вызовов, и я хочу знать, если есть более простой способ сделать это с помощью агрегатов или какой-либо другой метод