我需要在文档中存储类似starttime
和endtime
的内容。 为了提供更多的上下文,这些将反映商店的开业和关门时间。 因此,例如,starttime
可以是9am,endtime
可以是9pm。 存储这个最好的方法是什么? 这就是我现在正在做的事情:
timings: {
startTime: {
type: String,
required: [true, "....."]
},
endTime: {
type: String,
required: [true, "....."]
}
}
其思想是将值存储为字符串(“9am”,“9pm”),并在每次查询数据库时进行某种时间解析。 但我在想有没有更好的方法? 我的另一个想法是将其存储为datetime
,忽略日期部分。 我还能做什么? 我希望尽可能避免在应用程序级别上进行解析/处理,并利用MongoDB的强大功能。
我用猫鼬和Nodejs。
我同意日期类型是不相关的(而且它与时区有关,您可能不想到达那里。。。)
我会将它存储为数字,而不是字符串。 为什么? 因为您可能想要查询它(就像所有“给我所有晚上8点以后开门的商店”),而使用字符串进行查询会很烦人。。。
我同意:
{
startTime: {
value: number;
amOrPm: string; //(if you don't want to use a 24 hours base)
},
endTime: {
value: number;
amOrPm: string; //(if you don't want to use a 24 hours base)
},
timeOffset: number // So you keep track on the offset with the base timezone
}
您也可以存储分钟,甚至只存储“minutes ellapsed sech midnight”中的时间,并在每次访问时进行转换。
这样的偏移量不能让您轻松地跨不同时区查询某个特定时刻,但我猜这在您的情况下是完全没用的。
你也可以把天存储成一个数字(‘正式’星期日是0,那么星期一是1),但是现在存储一个名字也很容易。
编辑:对于那些日子来说,也许用一个数组会更好:
{
daysOppenned: [0, 1, 4]
}
最后,如果每天都有不同的时间开始呢? 也许你必须考虑有一个数组的日子,每个日子都包含开放时间和关闭时间,就像上面一样。
如果你想了解更多细节,有些商店在中午关门,而有些商店(比如餐馆)一天只开两次,你可以让它们在日程表上打勾,并将其存储在数组中。
如果你需要建造类似的东西,请告诉我们!