You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用sort、skip、limit实现分页时返回空数据的问题求助

解决MongoDB排序+分页返回空结果的问题

你的代码存在三个核心问题,导致返回空结果:

1. Cursor方法未正确链式调用

MongoDB的limit/skip/sort等cursor方法不会修改原cursor对象,而是返回一个携带新条件的新cursor。你分开调用这些方法但未重新赋值,原cursor根本没应用分页和排序规则。

2. 未将Cursor转换为数据数组

直接返回cursor对象无法被正确序列化返回给客户端,必须调用toArray()方法获取实际的查询数据。

3. Skip值超过数据总量

你的示例数据只有10条,skip(10)会跳过所有数据,自然返回空。如果是测试分页逻辑,应将skip值设为0或小于数据总量的数值。

修正后的代码

let query = { 
   playerId : playerId, 
};

// 链式调用cursor方法,并转换为数组
let data = await collection.find(query)
  .sort({"lastAccessed" : -1}) // 先排序,再分页(顺序影响性能)
  .skip(0) // 实际分页时改为:(当前页码-1)*每页条数
  .limit(10)
  .toArray();

context.res = {
   body: data
}

额外提示

  • 分页操作顺序:先sort,再skip,最后limit,这是MongoDB的最优执行顺序,能减少不必要的数据加载。
  • 若需实现多页分页,确保数据总量大于skip值,否则会返回空结果。

内容的提问来源于stack exchange,提问作者temp

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 17:30:13