一、时区问题
mongodb里存储的date比正常时间少8小时,那是因为它用的是格林尼治时间,new Date()的时候创建的是本地时间(北京时间),位于东八区,springboot配置里添加如下配置即可指定时区和返回的日期的格式:
#处理时区问题
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss.SSS
spring.jackson.time-zone=GMT+8
在从mongodb里查出来数据的时候,会自动转换成本地时间(java自己做的事儿)。也就是程序里new Date()的时候比如是(北京时间)2020-06-20 18:20:20.123 到了mongodb里就变成了(格林尼治时间)2020-06-20 10:20:20.123 ,接着查出来的数据会自动处理成本地时间2020-06-20 18:20:20.123,造成的影响仅仅是通过脚本查看数据库数据的时间,java会自动处理成本地时间,这个无需自己处理,要想统一化,就用String类型的时间或者long类型的时间(使用long存储的时候不太友好,一串数字谁知道是猴年马月)。
MongoDB公司比较无所谓,不给设置时区,所以统一都是格林尼治时间。。。(此处应该拉出去批评10分钟)
二、数据库同步工具
1、MongoShake
阿里巴巴的 MongoShake ,目前可以支持到MongoDB4.X(我测试从mongodb3.2.16同步数据到mongodb4.0.4没问题)
延迟2s左右