Node.js $sort使聚合管道mongodb中的$skip无效
我正在使用聚合来查询用户。每个后续请求使用$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似乎停止工作,并在每个后续请求中返回重复数据(即使
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
}
]