我正在开发一个应用程序,其中我有超过 10k 条记录添加到解析中的类中。现在我正在尝试使用 PFQuery 获取这些记录(我正在使用“ skip ”属性)。但我无法获取超过 10k 的记录,并且收到以下错误消息
“不允许超过 10000 的跳过”
这对我来说是个大问题,因为我需要所有数据。
有没有人遇到过这样的问题。请分享您的观点。
谢谢
我正在开发一个应用程序,其中我有超过 10k 条记录添加到解析中的类中。现在我正在尝试使用 PFQuery 获取这些记录(我正在使用“ skip ”属性)。但我无法获取超过 10k 的记录,并且收到以下错误消息
“不允许超过 10000 的跳过”
这对我来说是个大问题,因为我需要所有数据。
有没有人遇到过这样的问题。请分享您的观点。
谢谢
问题确实是由于 mongo 跳过操作的成本。您可以制定一个不需要跳过运算符的查询。我的首选方法是 orderBy objectId,然后添加 objectId > last yielded objectId 的条件。这种类型的查询可以被索引并保持快速,这与跳过分页不同,后者在查找中具有 O(N^2) 成本。
我的假设是它基于 MongoDB 的跳过实现的性能问题。
cursor.skip() 方法通常很昂贵,因为它要求服务器在开始返回结果之前从集合或索引的开头步行以获取偏移量或跳过位置。随着偏移量(例如上面的 pageNumber)增加,cursor.skip() 将变得更慢并且更占用 CPU。对于较大的集合,cursor.skip() 可能会成为 IO 绑定。