替代跳过并限制任意排序的猫鼬分页

时间:2013-10-13 16:38:26

标签: node.js mongodb sorting pagination mongoose

首先我要说的是,我已经读过(MongoDB - paging)使用跳过和限制分页对性能不利,最好按dateCreated之类的方式进行排序并修改查询每个页面。

在我的情况下,我让用户指定要排序的参数。有些可能按字母顺序排列。为这种类型的任意排序指定查询似乎相当困难。

是否有一种性能友好的方式来对任意排序进行分页?

实施例

mongoose.model('myModel').find({...})
        .sort(req.sort)
        ...

次要问题:我需要在多大程度上担心这个问题?

1 个答案:

答案 0 :(得分:2)

我认为你不能这样做。

但在我看来,最好的方法是根据你的req.sort var建立你的查询。 例如(它用coffescript编写)

userSort = {name:1} if req.sort? and req.sort="name"
userSort = {date:1} if req.sort? and req.sort="date"
userSort = {number:1} if req.sort? and req.sort="number"


find {}, null , {skip : 0 , limit: 0, sort : userSort } , (err,results)->