mongoDB: формат $ dateToString для отображения времени с интервалом в 15 минут - PullRequest
2 голосов
/ 10 апреля 2020

У меня есть пример здесь, https://mongoplayground.net/p/fqxBy6NAZXL

Как вы увидите, в конечном результате есть поля "dateHour" и "minuteBucket". Я делю время на 15,0 минут, так что значение minuteBucket всегда будет равно 0, 1, 2, 3

dateHour сейчас не показывает минуты.

Ожидается:

Мне нужно удалить поле «minuteBucket», но все равно разделить время на 15 минут для этой агрегации и показать «dateHour» с HH: MM, где оно всегда округляется до 15 минут. пример, он должен выглядеть в этом формате в зависимости от времени.

"2020-03-19T18:00:00", "2020-03-19T18:15:00","2020-03-19T18:30:00","2020-03-19T18:45:00"

1 Ответ

1 голос
/ 10 апреля 2020

Вы можете использовать $ dateFromString для анализа dateHour, а затем добавить _id.minutebucket, умноженное на 900000 (15 минут * 60 секунд * 1000 миллисекунд):

{
    dateHour: {
        $let: {
            vars: { parsedDate: { $dateFromString: { dateString: "$_id.dateHour", format: "%Y-%m-%dT%H" } } },
            in: { $toString: [ { $add: [ "$$parsedDate", { $multiply: [ "$_id.minuteBucket", 900000 ] } ] } ] }
        }
    }
}

Пн go Детская площадка

...