2015-10-22 42 views
1

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

var aggPipeline = [ 
    locationMatch, 
    userToUsersMatch, 
    usersToUserMatch, 
    { 
    $skip:cursor 
    }, 
    { 
    $limit:perRequest 
    } 
] 

这工作正常,并返回用户,直到没有剩下要返回。当我在流水线中添加$ sort时,$ skip似乎停止工作,并且在每个后续请求中都会返回重复数据(即使光标/偏移量正在递增)。

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

我试图通过lastActive领域的所有结果进行排序,然后返回他们,跳过偏移量为已经返回了什么。我不明白为什么$ sort会导致重复数据在随后的调用中返回 - 它并不总是重复前一个请求的重复,但可以每隔一段时间附加一个用户并删除第一个用户。

任何人都知道这里发生了什么?

非常感谢。

回答

相关问题