mongo 时间字段可以用 string查询数据还是ISODate类型?

424 阅读1分钟

结论

使用mongo ISODate类型

原因分析以下↓↓****↓

field type string

timeA = "2022-3-31"

timeB = "2022-11-31"

timeB > timeA,机器比较时间是逐字节比较, timeA 2022- 等于  timeB 2022-,继续进行比较 3>1,结果 timeA > timeB。时间格式补位 timeA 格式 "2022-03-31",0<1,timeB > timeA。

field value storage capacity

一个正常的epoch时间是32位(4字节),一个字符串日期至少是10个字节(如2018-06-12),字符串时间至少是19个字节(如2018-06-12 12:00:00),浪费空间浪费效率。

mongo查询运算符year/year/month/$day

正常的时间可以通过year/year/month/$day等运算符很方便地取出相应的部分,字符串瞪眼。

以上分析原因足以说明,时间字段不适用string类型。

不同见解欢迎论证。☺