Is it possible to limit the number of scanned documents, similar to MySQL subselect?
在具有数百万个文档的MongoDB集合上进行查询并在未索引的字段上进行过滤或排序时,查询运行太慢,因为mongo需要扫描整个集合。在Mysql上,可以通过执行子选择仅过滤最后的40k行来实现,例如:
1 2 3 4 5 |
在此SQL中,我得到最后40k行,然后应用过滤和排序逻辑,即使表有数百万行,它也可以快速运行。
在MongoDB上,仅当对索引字段进行过滤或排序时,我才能获得良好的性能,否则,它将运行太慢。我想我无法在每个字段中创建索引,那么在这种情况下我该怎么办? MongoDB上有与此类似的东西吗?
您可以通过使用按照所需顺序执行操作的聚合管道来执行此操作:
1 2 3 4 5 6 7 8 9 10 |