基于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)预期结果