gpt4 book ai didi

javascript - 从 MongoDB 检索 Docker 日志

转载 作者:行者123 更新时间:2023-12-03 08:23:16 31 4
gpt4 key购买 nike

我想通过 Fluentd 将 Docker 的日志存储到 MongoDB 中。设置非常简单,但我正在努力解决的是如何以正确的顺序从 MongoDB 检索日志并支持分页。

日志文档的结构是

{
_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说:

The relationship between the order of ObjectId values and generation time is not strict within a single second.

这似乎是一个问题 - 如果我尝试查找 _id 低于 lastIdFromPreviousPage 的所有文档,则不能保证在一秒钟内对文档进行排序按照它们的书写顺序。上一页中的一些日志可能会包含在结果中,即使它们已经显示在上一页上。

在 MySQL 中,如果您通过 auto_increment 字段对结果进行排序,则可以保证结果的顺序正确,但是 MongoDB 呢?这里正确的做法是什么?

最佳答案

光标为您抽象了分页工作。查看the docs例如使用批处理,或者只是从光标连续读取。

关于javascript - 从 MongoDB 检索 Docker 日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33652401/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com