Как получить документы за текущий календарный день в Mongoose / MongoDB - PullRequest
0 голосов
/ 25 декабря 2018

Я пытался гуглить это, но ничего не нашел и удивился, поэтому задам вопрос ради поисковых систем.

Есть ли способ получить все существующие документы за текущий календарный деньучитывая конкретный часовой пояс?Я предполагаю, что буду объединять момент-часовой пояс и Mongoose, но мне интересно, существует ли для этого код, поэтому мне не нужно начинать с нуля, спасибо.

1 Ответ

0 голосов
/ 25 декабря 2018

Допустим, у вас есть коллекция col с полем dateTime типа Дата BSON , интерпретируемая как UTC .Затем вы хотите получить все документы за 25 декабря для America/New_York часового пояса (где календарный день начинается через 5 часов после UTC).Для этого вы можете использовать оператор $ dateFromParts в Aggregation Framework и передать часовой пояс в качестве параметра:

db.col.aggregate([
    {
        $match: {
            $expr: {
                $and: [
                    { $gte: [ "$dateTime", { $dateFromParts: { 'year' : 2018, 'month' : 12, 'day': 25, timezone: 'America/New_York'  } } ] },
                    { $lte: [ "$dateTime", { $dateFromParts: { 'year' : 2018, 'month' : 12, 'day': 26, timezone: 'America/New_York'  } } ] }
                ]
            }
        }
    }
])

timezone выражение может быть либо идентификатор часового пояса Олсона (например, America/New_York) или смещение UTC, например +05:00

...