来自https://github.com/meteor/meteor/wiki/Oplog-Observe-Driver。
从Meteor 0.7.2开始,我们使用OplogObserveDriver进行大多数查询。那里 是仍然使用PollingObserveDriver的几种类型的查询:
...
- 指定跳过选项的查询
...
这意味着当你使用基于skip
的分页时,总是当你需要分页机制时,如果你有很多用户可以导航的记录,它将使用那个旧的非常无效的民意调查 - -diff算法。
我仍然认为Meteor只适用于某些有限类型的应用程序,其中只有少数人需要协同工作并且实时更改传播。
如果我有堆栈溢出的东西,它会非常慢,因为每个客户端可能在不同的页面上,这意味着每次添加/删除新消息时重新运行1000个查询,因为流星无法读取mongo oplog对skip
运算符的查询会受到影响。
我是对的?
答案 0 :(得分:2)
有很多方法可以不基于跳过分页。因为你有一些排序顺序(否则你不会以任何有意义的方式分页),你可以说"根据这种排序顺序给我下面的50个大于这个值的项目"。
例如,如果你有这样的分页查询:
Posts.find({ author: "Nick" }, { sort: { timestamp: -1 }, limit: 50, skip: 200 })
你可以像skip
这样重写它:
Posts.find({ author: "Nick", timestamp: { $gt: X } }, { sort: { timestamp: -1 }, limit: 50 })
其中X
是上次发布的帖子的时间戳。