Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于MongoDB游标的分页聚合 问题_Mongodb_Mongodb Query_Aggregation Framework - Fatal编程技术网

基于MongoDB游标的分页聚合 问题

基于MongoDB游标的分页聚合 问题,mongodb,mongodb-query,aggregation-framework,Mongodb,Mongodb Query,Aggregation Framework,我有一个最近的学生的集合,其中我维护了一个教师最近学生的列表 { StudentId: ObjectId() TeacherId: ObjectId() lastInteractionTimestamp: Date() } 我还有另一个收集学生,其中保存了每个学生的实际详细信息 我想得到一个给定老师的学生名单,按最近时间排序(lastInteractionTimestamp降序排列)。除此之外,学生身上可能还有其他过滤器,如姓名、年龄等。 我的方法 我从集合recent

我有一个
最近的学生的集合
,其中我维护了一个教师最近学生的列表

{
    StudentId: ObjectId()
    TeacherId: ObjectId()
    lastInteractionTimestamp: Date()
}
我还有另一个收集
学生
,其中保存了每个学生的实际详细信息

我想得到一个给定老师的学生名单,按最近时间排序(
lastInteractionTimestamp
降序排列)。除此之外,学生身上可能还有其他过滤器,如姓名、年龄等。

我的方法 我从集合
recentStudents
中查询并获取给定
teacherId
的所有studentId列表,按
lastInteractionTimestamp
排序,并将其存储在列表
recentstudentId
中。然后我从
students
集合中获取这些studentId。我需要以相同的ID顺序获取它们,因此我使用聚合

[
{$match:{…filterQuery}},
{$addFields:{studentOrder:{$indexOfArray:[RecentStudentId,$\U id']}},
{$sort:{studentOrder:1,…sortQuery},
{$limit:first+1 | | Number.MAX_SAFE_INTEGER},
];
filterQuery
sortQuery
是其他与学生相关的筛选器和排序字段,如
name
age

这个查询按预期工作,但问题是
recentStudents
集合有很多学生,所以我需要基于光标的分页。我能够获取包含所有sortfields的最后一个值的endcursor,以便找到下一个对象。但是,我没有在其中获取字段
studentOrder

如何在自定义聚合字段上实现基于光标的分页?

发布详细信息:1)一些示例/示例文档2)您的输入值3)预期结果