是否有可能通过"property"与where子句和现在的"索引/位置"的结果排序?
我的意思是,当使用顺序排序时,我们需要能够知道结果在排序中的位置。
想象一个有100万用户节点的计分板,我按一个用户节点进行排序。使用where "name = user_name"进行评分,我不想知道用户的当前排名。我不知道如何使用order by…
start game=node(1)
match game-[:has_child_user]->user
with user
order by user.score
with user
where user.name = "my_user"
return user , "the position in the sort";
预期结果将是:
node_user | rank
(我不想在客户端获取一百万个条目来知道ORDER BY中节点的当前排名/位置!)
这个功能目前在Cypher中不存在。你有一个在SQL中是什么样子的例子吗?下面的内容符合要求吗?(只是一个草图,不工作!)
(代码)start game=node(1)
match game-[:has_child_user]->user
with user
order by user.score
(+ this code)
with user, index() as rank
return user.name, rank;
如果你有更多的想法或想要开始破解这个问题,请在https://github.com/neo4j/neo4j/issues打开一个问题
目前有一种方法可以解决这个问题:
start n=node(0),rank_node=node(1)
match n-[r:rank]->rn
where rn.score <= rank_node.score
return rank_node,count(*) as pos;
示例参见:http://console.neo4j.org/?id=bela20