NodeJS 如何在mongodb中存储hh(小时):mm(分钟)时间

uurv41yg  于 9个月前  发布在  Node.js
关注(0)|答案(2)|浏览(83)

目前,我正在制作调度系统,并在mongodb中存储信息
我的模型的一部分看起来像这样

{
 timings: [{from: "00:00", to: "01:00"}],
 weekend: [0, 5, 6]
}

字符串
我不知道这是否会是好的,从长远来看,你能帮我决定如何更好地存储时间在我的文件

fd3cxomn

fd3cxomn1#

MongoDB没有任何时间/间隔数据类型,所以你必须构建自己的解决方案。一些一般注意事项:
根据ISO-8601标准使用工作日,即一周的第一天(1)是星期一。然后使用$dateFromParts创建Date值会更容易。对于小时值,始终使用24小时格式。
您可以考虑将时间存储为

{from: {hour: 0, minute: 0}, to: {hour: 13, minute: 0}}

字符串
否则,当你必须创建Date值(例如用于比较)时,它将是:

{
    $dateFromParts : {
        ...,
        hour: { $toInt: { $arrayElemAt: [ { $split: [ "$from", ":" ] }, 0 ] } }, 
        minute: { $toInt: { $arrayElemAt: [ { $split: [ "$from", ":" ] }, 1 ] } }
    }
}


相比

{
    $dateFromParts : {
        ...,
        hour: "$from.hour", 
        minute: "$from.minute"
    }
}


另一种方法是存储真实的Date,例如0000-01-01T13:00:00或任何其他任意日期值。当您使用此类值时,只需忽略日期部分。
或者存储从午夜开始的分钟数(0..1 '440)或秒数(0..86'400)。但是,这样的数字不便于用户阅读。

ndasle7k

ndasle7k2#

我们也可以存储像这样的类型:字符串和hh:mm和hh以及mm必须是长度为2像09 and 02和小时必须是0到23,所以当我们必须对它执行操作,所以我们可以这样做排序等。

相关问题