Node.js 使用任意排序跳过和限制mongoose分页的替代方法

Node.js 使用任意排序跳过和限制mongoose分页的替代方法,node.js,mongodb,sorting,pagination,mongoose,Node.js,Mongodb,Sorting,Pagination,Mongoose,首先,我要说的是,我已经读到()了,使用skip和limit进行分页对性能有害,最好按照dateCreated之类的方式进行排序,并修改每个页面的查询 在我的例子中,我让用户指定排序依据的参数。有些可能是按字母顺序排列的。为这种类型的任意排序指定查询似乎相当困难 有没有一种性能友好的方法可以对任意排序进行分页? 范例 mongoose.model('myModel').find({...}) .sort(req.sort) ... 第二个问题:我需要在多大程度上

首先,我要说的是,我已经读到()了,使用skip和limit进行分页对性能有害,最好按照
dateCreated
之类的方式进行排序,并修改每个页面的查询

在我的例子中,我让用户指定排序依据的参数。有些可能是按字母顺序排列的。为这种类型的任意排序指定查询似乎相当困难

有没有一种性能友好的方法可以对任意排序进行分页?

范例

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

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

我认为你做不到这一点

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


可能重复对于需要这种灵活排序的情况,您需要使用
skip
limit
并适应性能。考虑将索引添加到通常排序的列中。
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)->