我想通过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又如何呢?这里的正确方法是什么?
我可能应该说,日志将显示在网页上,我的坏。为了能够使用相同的游标,我将不得不在基于文档支持的个别请求之间存储/序列化它。我错过了什么? –