先了解几个基本点:
1. MongoDB默认生成的ObjectId是在客户端完成的,时间戳+host+进程id等,详情见文档
2. ObjectId生成的时候,是根据当期那服务器时间所在的时区
3. 从collection中读出ObjectId,读取generation_time属性,默认是UTC
4. 北京时间比UTC时间早了八个小时
我们两台服务器,一个是北京时间,一个比北京时间早了八个小时。。。从这两个服务器入库MongoDB,并且根据generation_time读,就彻底乱了,结果
1. 北京时间的服务器,得到的generation_time时间比北京时间晚了八个小时
2. 比北京早了的服务器,得到的generation_time时间和北京时间相同
我们以为2是正确的。。。
我们用的是pymongo
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.