Mongodb 这个wierd BSON日期保存是怎么回事?

Mongodb 这个wierd BSON日期保存是怎么回事?,mongodb,bson,Mongodb,Bson,我目前正在为MongoDB编写一个驱动程序,因此我必须深入挖掘,因此我发现: DateTimeUTC的BSON规范: “\x09”e_name int64 int64的BSON规范: “\x12”e_name int64 BSON时间戳规范(虽然我知道它几乎总是在内部使用,但它只是为了显示BSON使用无符号整数): “\x11”e_name uint64 这对我来说似乎有点争议。为什么int64和utc millis甚至是分开的?mongoDB是否使用不同的方法来比较不同的BSON DATETI

我目前正在为MongoDB编写一个驱动程序,因此我必须深入挖掘,因此我发现:

DateTimeUTC的BSON规范:

“\x09”e_name int64

int64的BSON规范:

“\x12”e_name int64

BSON时间戳规范(虽然我知道它几乎总是在内部使用,但它只是为了显示BSON使用无符号整数):

“\x11”e_name uint64

这对我来说似乎有点争议。为什么int64和utc millis甚至是分开的?mongoDB是否使用不同的方法来比较不同的BSON DATETIMEUTC


为什么dateTimeUTC不是uint64而是有符号整数?毫秒始终大于0。这背后有什么原因吗?我遗漏了什么吗?

日期时间UTC用于表示时间点。它早于BSON,历史上一直使用有符号整数。这是为了允许使用DateTimeUTC指向纪元之前的日期。否则,无法使用DateTimeUTC表示1970-01-01之前的日期

相比之下,时间戳主要用于内部使用,并且预期主要用于当前日期,这些日期几乎不需要表示历元之前的时间(例如,操作的时间戳)


UNIX StackExchange中有一个与此相关的问题:

也许您也可以回答这个问题?