Я отслеживаю использование устройства и показываю пользователям их тенденции использования по часам. По сути, мне нужно просмотреть times
документы и проверить, было ли устройство «включено» между 18:00 и 19:00, затем 19:00 и 20:00, 20:00 и 21:00 и т. Д. В течение всех 24 часов.
Это это то, что я изначально написал:
// loop through 24 hours of the day
for (let j = 0; j < 24; j++) {
const beginningOfHour = moment().startOf('day').add(j, 'hour').toDate()
const endOfHour = moment(beginningOfHour).add({ m: 59, s: 59, ms: 999 }).toDate()
const cumulativeHours = timePerPeriod(beginningOfHour, endOfHour, myTimes) // calculation func
trendsArray.push(cumulativeHours)
}
Это не работает, потому что к beginningOfHour
и endOfHour
также прикреплена дата.
Я не могу понять, как проверить мои times
документы только за час, без какой-либо ссылки на дату. Любой совет, как это сделать?
РЕДАКТИРОВАТЬ: Вот как выглядит times
документ:
_id: 5e56cf9ae65bf2b30a6ab525 // ObjectID type
user_id: 5e56bb2b40ad526200401773 // ObjectID type
start: 2020-02-27T00:00:00.000+00:00 // Date type
stop: 2020-02-27T06:00:00.000+00:00 // Date type
Устройство может быть включено в течение любого периода времени, например, 3 месяца прямо или 15 секунд. Каждый документ time
проверяется, и, если он включен в течение какого-либо промежутка времени в течение этого часового периода, длина в миллисекундах, в которой он находился в течение этого часового периода, возвращается моей функцией вычисления (называемой cumulativeHours
выше).