ajax - 使用 MongoDb 和 Nodejs 进行 ajax 分页的最佳方法是什么?

标签 ajax node.js mongodb mongoose infinite-scroll

我有 mongodb 和 NodeJs。连接通过 mongoosejs 完成.
开发ajax无限滚动的最佳方法是什么?我应该使用限制和偏移吗?

最佳答案

当您对数据集进行分页时,“跳过和限制”方法效率不高。它实际上是 Shlemiel the Painter's algorithm .

范围查询效率更高(当索引支持时)。例如,假设您正在显示推文。您的页面大小为 20,并且您在第 1000 页上并且想要加载第 1001 页。

这个查询

db.tweets.find().sort({created_at: -1}).skip(1001*20).limit(20)

效率低很多
db.tweets.find({created_at: {$lt: last_displayed_date}}).
          sort({created_at: -1}).limit(20);

(前提是您在 created_at 上有索引)。

你明白了:当你加载一个页面时,记下最后一条推文的时间戳,并用它来查询下一页。

关于ajax - 使用 MongoDb 和 Nodejs 进行 ajax 分页的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10072518/

相关文章:

mongodb - 如何从mongoDB中的两个字段进行计数

Javascript window.open 不工作

php - Javascript:如何从输入表格的内容中找到相似的短语或文本?

javascript - 如何在用 JavaScript 或 NodeJs 编写的控制台应用程序中制作加载动画?

mongodb - 对于广泛的读写操作 MongoDB vs Cassandra

javascript - ( Node :1572) UnhandledPromiseRejectionWarning: ValidationError: profile validation failed: education. 0.fieldsofstudy:需要路径 `fieldsofstudy`

javascript - 无法调用此 API - AJAX

php - JS jquery 和 ajax 问题

node.js - 解析expressjs中的url参数 - angularjs应用程序

node.js - 在 EJS 中生成星星的最简洁方法