如何使用MongoDB对批量API进行结果分页?
API端点(仅针对上下文):
/team/listTeamsForUsers
输入:
{
"userIds": ["userId1", "userId2", "userId3"...],
"options": {
"pageSize": 10,
"pageIndex": 0
}
}
一个用户可以与多个团队相关联。因此,API需要能够基于pageSize
和pageIndex
对结果进行分页。
单个userId
输入可以进行分页。如何支持多个输入的分页?
用例示例:
User01
与10个团队相关。
User02
与20个团队相关。
when pageSize=10 and pageIndex=0
Teams 1-10 related to User01 should be returned.
when pageSize=10 and pageIndex=1
Teams 1-10 related to User02 should be returned.
when pageSize=10 and pageIndex=2
Teams 11-20 related to User02 should be returned.
很高兴看到这样的实现示例。
有什么建议吗?
答案 0 :(得分:0)
假设:
表结构:
考虑到您获得了一个userId列表作为输入,用于分页与这些用户关联的团队的SQL代码片段如下所示(请注意,我没有测试以下代码片段)。
select distinct t.name
from team t, user u, userTeam ut
where t.id = ut.teamId and u.id = ut.userId and u.id in (1, 2)
order by t.name desc
limit 0, 10;
limit
的参数是pageIndex*pageSize
和(pageIndex+1)*pagSize
。in
的参数是您从端点获取的userIds
。尽管此方法易于理解和实施,但它没有最佳性能。请参阅https://www.xarg.org/2011/10/optimized-pagination-using-mysql/了解MySQL的分页优化(尽管您可能可以将其中的大多数转换为任何SQL数据库)。