【问题标题】:Mongo read large amount of dataMongo读取大量数据
【发布时间】:2019-11-19 09:32:04
【问题描述】:

我有一个包含 115M 文档的 mongo 集合,大小约为 200 GB。

_id 类似于 “bbsr/13/pressure/1573689600000”。最后一个元素是 unix 时间戳。 现在我需要获取 _id :/bbsr/13/pressure/ 的所有文件。或 _id startsWith bbsr/13/pressure。这里,“bbsr/13/pressure”是标识符

我尝试使用 _id 正则表达式进行分页(跳过和限制),提供所有文档(数量为 330000)大约需要 1 小时。

我尝试了基于范围的查询 {_id={$gte=bbsr/13/pressure/1573689600000, $lt=bbsr/13/pressure/1574121600000}}。即使这样也需要一个多小时。

对于一个标识符来提供两种方法中的所有文档,需要一个多小时。

我想在最多 10 分钟内获取给定标识符的所有文档。

如何高效处理?

我正在使用 java 来获取值。

【问题讨论】:

  • 请格式化您的 JSON,使其更具可读性。
  • 您能否对集合运行更新以修改数据以使这项工作继续进行?

标签: mongodb indexing mongodb-query database-performance


【解决方案1】:

我认为您最大的问题是您尝试按自定义 _id 中的内容进行搜索。您应该做的是将时间戳存储在单独的属性中并对其进行索引,然后仅按该时间戳属性进行过滤。这样搜索会快很多。

另外,您是否需要自定义 _id 而不是让它自动生成的特定原因?我会将您的 _id 字段中的每个段改为单独的属性。分割的_id 的正则表达式解析绝对是你的罪魁祸首。搜索单个属性的速度要快得多。

【讨论】:

    猜你喜欢
    • 2013-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-16
    • 2012-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多