如何解决在查询DocumentDB时使用跳过和限制获取上一页的结果
我有一个约有800,000个文档的馆藏,我想一次取5,000个文档。
运行以下代码时:
const CHUNK_SIZE = 5000;
let skip = 0;
do {
matches = await dbClient
.collection(collectionName)
.find({})
.skip(skip)
.limit(CHUNK_SIZE)
.toArray();
// ... some processing
skip += CHUNK_SIZE;
} while (matches.length)
大约30次迭代后,我开始获取上次迭代中已经收到的文档。
我在这里想念什么?
解决方法
如评论中所述,您必须在查询上应用.sort()
。
要在不增加过多性能开销的情况下这样做,最简单的方法是在_id
上进行此操作,例如
.sort(
{
"_id" : 1.0
}
)
MongoDB或AmazonDocumentDB风味都不能保证没有它的隐式结果排序顺序。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。