[200分] MongoDB让人挠破头的分页问题

【Help】 2018-06-06 06:45:15
我们已经知道MongoDB的skip分页方式是效率低下的,很多社区里都有前人做过测试。问题是:如果不用skip,到底如何做分页?

很多人,包括《MongoDB权威指南》中给出的解决方案是:获取上一页的最后一条数据,然后使用gt和limit获取下一页的数据,关于这一点我已经实现,但问题又出现了:怎样获取上一页的数据?于是我依葫芦画瓢,获取了上一页的第一条数据和上上一页的最后一条数据,总算是用lt和gt搞定了。

可是,太丑陋了!这还不算完!

当前页是第1页,如果用户不是点击下一页,而是直接点击第10页,我如何能够知道第9页的最后一条数据是什么?

实在难以想象MongoDB会在如此常用的功能上具有这么大的缺陷,肯能是我研究得还不够深入,大家有没有其他的实现方案呢?
...全文
970 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
丰云 2018-06-07
  • 打赏
  • 举报
回复
mongodb归属文档型数据库,分页这类操作本就不是他的架构上的长处, 事实上,这类分页问题,完全可以用业务手段或算法实现。 随便举个栗子: 比如设定一个自增长的字段,每次分页取数据前先算好要取的数据该字段的值或范围,再用这个值或范围去取数据 还有其他的实现方法,比如这个自增长值可以每次动态生成等等 编程,思维一定要灵活,不要拘泥于各种形式或框框

62,243

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧