Я сейчас пишу драйвер для MongoDB, поэтому мне нужно копнуть немного глубже, и я нахожу это:
Спецификация BSON для DateTimeUTC:
"\x09" e_name int64
Спецификация BSON для int64:
"\x12" e_name int64
Спецификация BSON для timeStamp (хотя я знаю, что он почти всегда используется внутри, просто для того, чтобы показать, что BSON использует целые числа без знака):
"\x11" e_name uint64
Это кажется мне немного спорным. Почему int64 и utc millis даже разделены? Использует ли mongoDB разные способы сравнения разных BSON dateTimeUTC?
И почему dateTimeUTC - это не uint64, а целое число со знаком? миллис всегда> 0. Есть ли причина этого? Я что-то упустил?