【发布时间】:2013-10-30 07:15:27
【问题描述】:
我们有 2700 万份文档分布在 3 个分片中,每个分片包含大约 900 万份文档。每个文档都有约 15 个索引字段。要求是我们应该能够使用索引字段的组合来过滤这些文档。对于复杂查询,count() 最多花费不到 20 秒。
我们还需要使用 find() 提取与过滤器匹配的文档的特定字段。但是,有时这需要几分钟才能完成,尤其是在结果超过 100 万个文档时。这是通过 Web 服务调用执行的,因此有时会发生超时。
我想知道添加更多分片是否可以解决问题,或者我们可以应用其他优化。
谢谢!
【问题讨论】:
-
您是否有可能引入限制并通过偏移量迭代查询?这样你可以让 mongo 更快地返回
-
一次获取 100 万份文档几乎是不可能的。你需要分页。
-
在需要几分钟才能响应时是否使用索引?返回时结果集有多大(以 MB 为单位)?
-
查询正在由 Node.js API 执行。它正在迭代 mongodb 游标,如果有数百万条记录与查询匹配,则可能需要很长时间。如果必须只使用一个 API 调用返回整个结果集,我该如何使用分页?
-
似乎以前没有人遇到过这个用例。 :)
标签: mongodb mongodb-query