Как я могу создать структуру базы данных в mongodb для сохранения диапазона дат? - PullRequest
0 голосов
/ 14 мая 2018

Здесь я сохраняю диапазон дат с помощью golang. Предположим, мы должны сохранить весь понедельник в диапазоне от 1-may-2018 до 14-july-2018.

Как мы найдем весь понедельник между этими диапазонами, используя golang , а с другой стороны, мы установили start_time (8:00 A.M.) и end_time (6:00 P.M.) первые два наступающих понедельника в базе данных, но в третий понедельник у нас есть изменение в расписании, что есть изменение времени как start_time (9:00 A.M.) и end_time (5:00 P.M.). Тогда как я сделаю свою базу данных, чтобы сделать эту ситуацию практически используя Голанг.

Может ли кто-нибудь помочь мне решить эту проблему? Я создал базу данных для ppr, и я работаю над ней и создаю несколько полей, показанных ниже: -

Fields for Schedule //Schedule is a collection name
 Id (int)
 Day (string)
 Start_hours (int)
 Start_minutes (int)
 End_hours (int)
 End_minutes (int)
 Start_date (timestamp)
 End_date (timestamp)

Как я буду выбирать понедельник между выбранным диапазоном и как я буду действовать в ситуации, которую я объяснил выше, кто-нибудь может дать мне совет, чтобы облегчить эту ситуацию. Спасибо, если это основной вопрос, тогда мне очень жаль.

1 Ответ

0 голосов
/ 17 мая 2018

Я бы сделал что-то вроде этого.

  1. Найти первую дату понедельника из диапазона дат (см., Например, Как получить первый понедельник данного месяца в Go?
  2. Понедельники случаются каждую неделю, поэтому вы можете легко найти оставшиеся даты, добавив 7 дней до даты окончания
  3. Сохранение всех найденных вами дат понедельника с указанием времени начала и окончания

Я бы не стал беспокоиться о часах и минутах, так как вы легко можете получить их из отметок времени в Go. Вот упрощенная структура БД, которую я бы сделал

Fields for Schedule //Schedule is a collection name
 Id (int) 
 Day (string)
 Date (timestamp) // the actual date
 Start (timestamp)
 End (timestamp)

Вам не нужно больше полей. Вы можете получить день недели (день (строка) в вашей структуре, например, понедельник) из поля «Дата», но я считаю, что если вы хотите запросить коллекцию по разным дням, это может ускорить процесс, но будьте осторожны, если вам нужно настроить для часовых поясов. Если вы работаете с более чем одним, то сохраняйте все в UTC, и у вас может быть дополнительный поданный часовой пояс, потому что датой может быть понедельник для одной зоны и воскресенье для другой.

Итак, Расписание будет содержать рабочие дни, а также время начала и окончания каждого из них. Я не уверен, что если вам нужно сохранить начальные диапазоны дат, коллекция Schedule также будет содержать этот диапазон, от первой записи до последней. По моему мнению, сначала я бы заполнил коллекцию заданным диапазоном дат, а затем я могу изменить ее, добавив новые дни или удалив их. Когда вы запрашиваете эту коллекцию с некоторым диапазоном начальной и конечной дат для поля Дата, если ваш первый результат приходит не позднее, чем через 7 дней с начала, это означает, что вы пропустили 1 или более записей с начала. Если последний результат приходит старше 7 дней после окончания диапазона, это означает, что вы пропустите некоторые записи до конца диапазона.

Нет ничего конкретного для Go, на мой взгляд, Go хорошо работает с датами, и вам не нужны никакие специальные структуры дат в вашей БД.

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