如何在mongodb中创建数据库结构以保存日期范围?

时间:2018-05-14 10:31:02

标签: mongodb go

我在这里使用golang保存日期范围。假设我们必须将所有星期一保存在1-may-201814-july-2018的范围之间。

我们如何使用 golang 查找这些范围之间的所有星期一,另一方面我们设置了start_time8:00 A.M.)和end_time6:00 P.M.)数据库中的前两个星期一(start_time),但是在第三个星期一,我们对时间表进行了更改,即9:00 A.M.end_time)和{{ 1}}(5:00 P.M.)。那么我将如何使我的数据库实际上使用golang来实现这种情况。

任何人都可以帮我解决这个问题。我为它做了一个数据库,我做了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 :(得分:0)

我做这样的事情。

  1. 查找日期范围内的第一个星期一日期(请参阅示例How do I get the first Monday of a given month in Go?
  2. 星期一每周都会发生,因此您可以在结束日期前7天内轻松找到其余日期
  3. 使用开始和结束时间存储您找到的所有星期一日期
  4. 我不会花费数小时和数分钟,因为您可以轻松地从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适用于日期,你不需要在你的数据库中有任何特殊的日期结构。