我正在使用neo4j来创建社交网络应用程序。数据模型在两个FRIEND
节点之间具有USER
关系。我需要通过displayName
(唯一索引)订购我的所有朋友。
我需要对此查询进行分页。我将从上一个查询结果中获取的列表中发送姓氏。我想将每个页面限制为20个名字。
MATCH (u:USER{displayName:{id}})-[:FRIEND]-(f:USER)
RETURN f
ORDER BY f.displayName
LIMIT 20;
最好的方法是什么? SKIP
将SKIP 0
,SKIP 1*20
,SKIP 2*20
,...
答案 0 :(得分:0)
您可以这样使用查询:
ORDER BY f.displayName LIMIT START_POSITION , LAST_POSITION;
例如:
ORDER BY f.displayName LIMIT 0 , 20;
ORDER BY f.displayName LIMIT 21 , 40;
答案 1 :(得分:0)
是的,您可以使用SKIP
子句来执行您想要的操作。在下文中,我假设您提供page
值(从0开始)作为参数。
MATCH (u:USER{displayName:{id}})-[:FRIEND]-(f:USER)
RETURN f
ORDER BY f.displayName
SKIP {page} * 20
LIMIT 20;
请注意,如果朋友列表在分页期间可以更改,则此技术并非万无一失。