按全局排序顺序分页从 MongoDB 集合中获取数据

问题描述 投票:0回答:1

我正在开发一个项目,其中有一个名为

words
的 MongoDB 集合,其中包含各种单词。我的目标是以分页方式获取这些单词,同时在全局范围内保持按字典顺序排序

我目前正在使用以下查询来实现分页,但排序似乎仅在每个页面内应用,后续页面可能无法保持正确的字典顺序:

db.words.find({})
  .sort({ word: 1 }) // Sorting words in ascending order
  .skip(pageNumber * pageSize)
  .limit(pageSize);

在这种情况下,排序没有考虑整个集合,导致当我对数据进行分页时字典顺序可能不一致。

我想知道是否有推荐的方法来修改此查询,或者是否有替代策略来确保在所有页面上全局维护词典排序。此外,由于

word
字段不能保证是唯一的,因此我正在寻找考虑这种情况的解决方案。

任何关于如何为像

word
这样的非唯一字段实现按字典顺序排序的分页的见解或示例将不胜感激。 此外,我打算为其他字段(如
createdAt
)实现类似的按字典顺序排序的分页。关于如何将此方法扩展到其他领域的任何指导或示例也将非常有帮助。

谢谢!

javascript node.js mongodb express sorting
1个回答
0
投票

您的查询没问题,您只需在

sort
中添加一个相等断路器,最简单的是使用
_id
字段。

db.words.find({})
  .sort({ word: 1, _id: 1 }) // Sorting words in ascending order, if words are equal sort by _id
  .skip(pageNumber * pageSize)
  .limit(pageSize);

_id
字段是唯一的,因此这将保证稳定性。

© www.soinside.com 2019 - 2024. All rights reserved.