日期类型如何存储 Date, Long?

来源:3-17 【更新文档】动手实战 - 最后一波更新操作符

buoge

2019-05-07

请问下老师,日期类型如何存储最优化?

1.Date 类型有时区的细节需要注意,后续代码实现比对感觉构造时间略麻烦
2.存时间戳 Long 类型,存储方便,但是不方便阅读,范围查询和比较查询都好实现,代码编写查询逻辑也简单

但有人也说涉及聚合查询时按年,按月,还是Date类型方便,请问老师怎么看?

写回答

1回答

Stannum

2019-05-14

同学你好~如果你使用的是4.0版本(或者至少是3.6版本)的话,其实很多聚合操作已经支持时区了

比如说从Date对象中提取月份的$month操作符,可以传入一个代表时区的参数:

{ $month: {

     date: ISODate("2000-01-01T00:00:00Z"),
     timezone: "+0800"

  }

}

类似支持时区操作的操作符还有不少,比如$dateToParts, $dateFromString等等,不知道这些是否可以帮助你简化对于数据库中Date类型字段的操作难度?

1
1
DangCode
我想楼主的提问更多的在于对于时间数据的设计是用时间戳还是时间对象,其实我跟楼主一样也有这样的疑问,毕竟操作数据库时候都是通过对应语言的驱动来进行,看了老师的回答,我想设计关于时间的数据类型时候还是用时间对象吧
2020-02-04
共1条回复

玩转MongoDB4.0(最新版) 从入门到实践

30%理论+70%实战,用实操检验真理,一门让你事半功倍的入门进阶课

1138 学习 · 197 问题

查看课程