Найти ближайшую запись к определенным часам - PullRequest
0 голосов
/ 06 ноября 2019

Я получаю данные каждые 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...