Я получаю данные каждые 10 минут и пытаюсь найти ближайшую запись (только один, больший или равный минимальному часу) в определенные часы на основе поля createAt. * 1001 *
Что-то вроде:
'hour': {'$ in': [0, 3, 6, 9, 12, 15, 18, 21]}
У меня есть примермежду 2 часами, но мне нужно, чтобы к нему обращались в течение X дней назад.
я использую mongodb v4
Это работает, но только между двумя конкретными часами, найдите записи последних 24 часов, между 6и 9, сортировка и ограничение
db.getCollection("datastores").aggregate([
{
$match: {
'createdAt': { '$gt': new Date(Date.now() - 24 * 60 * 60 * 1000) },
'empresa': 1,
'centro': 1
}
},
{
"$redact": {
"$cond": [
{
"$and": [
{ "$gte": [{ "$hour": "$createdAt" }, 6] },
{ "$lt": [{ "$hour": "$createdAt" }, 9] }
]
},
"$$KEEP",
"$$PRUNE"
]
}
},
{
$sort: {'createdAt':1}
},
{
$limit: 1
}
])
На основе массива [0, 3, 6, 9, 12, 15, 18, 21], последние 24 часа, я ожидаю что-то вроде
_id: 5dc31621338189986d2ec9a0, созданный по адресу: «2019-11-06T00: 00»
_id: 5dc31621338189986d2ec9a1, созданный по адресу: «2019-11-06T03: 02»
_212336: 821: "2019-11-06T06: 01"
_id: 5dc31621338189986d2ec9a1, созданный:: 2019-11-06T09: 05 "
_id: 5dc31621338189986d2ec9a1, созданный At:" 2019-11-06T12: 01 "
_id: 5dc31621338189986d2ec9a1, созданный в:" 2019-11-06T15: 04 "
.... и soo on