Docker日志从MongoDB中检索
Docker logs retrieval from MongoDB
我想通过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文档说:
ObjectId值的顺序与生成之间的关系时间并不是一秒钟之内就能完成的。
这似乎是一个问题——如果我试图找到_id
低于lastIdFromPreviousPage
的所有文档,则不能保证在一秒钟内按照编写顺序对文档进行排序。上一页中的一些日志可能会包含在结果中,即使它们已经显示在上一页上。
在MySQL中,如果您通过auto_increment
字段对结果进行排序,则可以保证结果的顺序是正确的,但MongoDB呢?这里的正确方法是什么?
光标为您提取分页工作。查看文档中使用批处理的示例,或者只是从光标中连续读取。
相关文章:
- 检索MongoDB binData并显示为<img>src
- 如何在MongoDB中检索子文档引用
- MongoDB 2.0.0 驱动程序,按 ID 检索记录时出现问题
- 使用 NodeJS 和 Express 从 MongoDB 检索数据
- 使用 Paper.js、Meteor 和 MongoDB 存储和检索路径
- 如何通过按数组字段选择来检索MongoDB文档
- 从数组中检索值,并使用MongoDB将其存储在csv文件中
- Docker日志从MongoDB中检索
- 使用node.js将数据显示在从mongodb检索到的网页上
- MongoDB和Mongoose:如何检索嵌套对象
- 从MongoDB(猫鼬)检索/发布图像
- 检索回调函数范围外的MongoDB结果
- 检索只是一个元素从Mongodb
- 我想检索值插入特定日期使用mongodb的_id
- Meteor.js + MongoDB::从深度嵌套的数组中检索值
- 在MongoDB中通过UUID检索文档没有结果
- 流星和ReactJS -从MongoDB检索到字符串的日期
- Nodejs在从mongodb检索数据之前发送空响应
- 使用java在mongodb中插入数据,并使用javascript从mongodb中检索数据
- 从mongodb检索数据并使用Google图表将其可视化