我想通過Fluentd將Docker中的日誌存儲到MongoDB中。 這個設置非常簡單,但我正在努力的是如何從支持分頁的正確順序中檢索MongoDB中的日誌。從MongoDB檢索Docker日誌
日誌文件的結構是
{
_id: ObjectId(...),
time: ISODate(...),
log: "message"
}
日誌應該從最新到最舊的顯示與分頁支持。由於日誌已按照正確的順序到達,因此較舊的日誌會在較新的日誌之前寫入。我的做法是:
第一頁 - db.logs.find().sort({_id: -1}).limit(10)
和保存最後_id
下一頁 - db.logs.find({_id: {$lt: lastIdFromPreviousPage).sort({_id: -1}).limit(10)
等
這裏的問題是,MongoDB docs說:
的ObjectId值的順序與代之間的關係 時間不嚴謹機智只需一秒鐘。
這似乎是一個問題 - 如果我試圖找到所有文檔比lastIdFromPreviousPage
低_id
,它不能保證在單個第二的文件在它們被寫入的順序排列。即使已經顯示在前一頁中,前一頁中的某些日誌可能會包含在結果中。
在MySQL中,如果您通過auto_increment
字段命令結果,則可以保證結果的順序是正確的,但MongoDB又如何呢?這裏的正確方法是什麼?
我可能應該說,日誌將顯示在網頁上,我的壞。爲了能夠使用相同的遊標,我將不得不在基於文檔支持的個別請求之間存儲/序列化它。我錯過了什麼? –