Node.js $sort使聚合管道mongodb中的$skip无效

Node.js $sort使聚合管道mongodb中的$skip无效,node.js,mongodb,mongoose,aggregation-framework,Node.js,Mongodb,Mongoose,Aggregation Framework,我正在使用聚合来查询用户。每个后续请求使用$skip获得下一组结果,如下所示 var aggPipeline = [ locationMatch, userToUsersMatch, usersToUserMatch, { $skip:cursor }, { $limit:perRequest } ] 这可以很好地工作,并返回用户,直到没有用户可以返回为止。当我将$sort添加到管道中时,$skip似乎停止工作,并在每个后续请求中返回重复数据(即使

我正在使用聚合来查询用户。每个后续请求使用$skip获得下一组结果,如下所示

var aggPipeline = [
  locationMatch,
  userToUsersMatch,
  usersToUserMatch,
  {
    $skip:cursor
  },
  {
    $limit:perRequest
  } 
]
这可以很好地工作,并返回用户,直到没有用户可以返回为止。当我将$sort添加到管道中时,$skip似乎停止工作,并在每个后续请求中返回重复数据(即使游标/偏移量在递增)

我试图按lastActive字段对所有结果进行排序,然后返回它们,跳过已返回内容的偏移量。我不明白为什么$sort会导致在后续调用中返回重复数据-它并不总是与前一个请求完全相同,但可能每隔一段时间追加一个用户并删除第一个用户

有人知道这里发生了什么吗


非常感谢。

我相信这是序列优化的结果,看一看,有一个与您相同的示例($sort+$skip+$limit Sequence):

aggPipeline = [
  locationMatch,
  userToUsersMatch,
  usersToUserMatch,
  {
    $sort:{lastActive:-1}
  },
  {
    $skip:cursor
  },
  {
    $limit:perRequest
  }
]