gpt4 book ai didi

mongodb - 如何使用 MongoDB 高效地分页批量结果

转载 作者:行者123 更新时间:2023-12-03 01:23:13 25 4
gpt4 key购买 nike

我正在我的 MongoDB 集合上使用以下查询,该查询需要一个多小时才能完成。

db.collection.find({language:"hi"}).sort({_id:-1}).skip(5000).limit(1)

我试图获取一批 5000 个结果,以升序或降序处理语言字段中包含“hi”值的文档。因此,我使用这个查询,每次通过增加“skip”值来跳过已处理的文档。

此集合中的文档数量略高于 2000 万。已创建“语言”字段的索引。我使用的MongoDB版本是2.6.7

是否有更适合该查询的索引,可以更快地得到结果?

最佳答案

当您想要降序排序时,您应该创建一个多字段索引,该索引使用您排序的字段作为降序字段。您可以通过将这些字段设置为 -1 来实现这一点。

该索引应该会大大提高排序的性能:

db.collection.ensureIndex({ language: 1, _id: -1 });

当您还想加快其他情况时 - 检索按升序排序 - 创建第二个索引,如下所示:

db.collection.ensureIndex({ language: 1, _id: 1 });

请记住,当您不对结果进行排序时,您会按自然顺序收到它们。自然顺序通常是插入顺序,但不能保证这一点。有多种事件可能会导致自然顺序困惑,因此当您关心顺序时,您应该始终显式排序。此规则的唯一异常(exception)是 capped collections始终保持插入顺序。

关于mongodb - 如何使用 MongoDB 高效地分页批量结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31675598/

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