如何在neo4j中实现基于游标的分页?

问题描述 投票:0回答:1

我正在尝试实现一个基于游标的分页服务器。我使用 neo4j 作为数据库。我对生成记录游标感到困惑。我知道光标应该是唯一的和连续的才能正确生成分页。我认为我们不能将 neo4j ID 作为光标。在我的数据库中,每个节点都有唯一的 uuid,但这并不意味着它是连续的。我还创建了可以使用的数据库字段,但该字段可能不是唯一的。使用 ne04j 解决此问题的正确方法是什么?

neo4j pagination cursor
1个回答
0
投票

您可以使用 ORDER BY 子句的组合来生成游标,如果您将数组作为参数与订单字段一起传递,您可以动态构建游标并将其连接到创建的日期和 ID 以确保唯一性

例如,如果您想返回按用户名排序的记录,请像下面这样。您可以在创建之前按任意数量的字段和 id 进行排序

params: {
   cursorKeys: ['name', 'createdAt', 'id'],
   cursor: 'dave:20240105:123456hhghg' //previous cursor,
   skip: 10,
   limit: 10
}

WITH user,
 apoc.text.join([k IN $cursorKeys | user[k] ]':') as cursor

WITH user, cursor
WHERE cursor > $cursor

return user
ORDER BY user.name, user.createdAt, user.id
SKIP $skip
LIMIT $limit
© www.soinside.com 2019 - 2024. All rights reserved.