我有一個文件,字段爲_id
,類型爲ObjectId
,字段爲created_at
的類型爲Date
。Mongodb按日期排序
_id
當然會增加,並且created_at
的值是current_date應該會增加。
所以我的問題是:
- 是否有任何機會,2個文件,A和B,
A._id > B._id
,但A.created_at < B.created_at
。 - 如何保持
created_at
儘可能精確,因此created_at
的順序對應於_id
。
我有一個文件,字段爲_id
,類型爲ObjectId
,字段爲created_at
的類型爲Date
。Mongodb按日期排序
_id
當然會增加,並且created_at
的值是current_date應該會增加。
所以我的問題是:
A._id > B._id
,但A.created_at < B.created_at
。created_at
儘可能精確,因此created_at
的順序對應於_id
。
唯一的 「真正的」 機會會'_id'生成的地方在當前「時間」位於服務器實例後面的源中,而「created_at」屬性來自['$ currentDate'](https://docs.mongodb.org/manual/reference/operator/update/ currentDate /),而不是遠程。儘管「盡最大努力」,「created_at」實際上可以被「改變」,而「_id」字段是「不可變的」,並且**不能被改變。因此'_id'中的'ObjectId'永遠不會改變它的初始值,但其他屬性沒有這種區別。 –
https://docs.mongodb.org/manual/reference/method/ObjectId/ 在上面的鏈接,你可以看到,mongodb使用時間戳來創建它的ID ..所以我認爲這不可能是一個情景,當這可能會發生,除非你改變系統時間在你的服務器運行.. –
@AnirudhModi好吧「技術上」可能會有上述情況。另一件需要考慮的事情是,ObjectId中的「時間」不是精確到毫秒,而是任何BSON「日期」。因此,多個ObjectId值實際上可以代表「同一時間」(儘管仍然是獨立單調的),在包含完整的Date對象的字段中,這是「不太可能」,或者是一個「更精確的數字版本」 「時間測量。取決於使用情況,通常是一個相當廣泛的主題。 –