Neo4j / Cypher:排序和在哪里,知道排序结果的位置



是否有可能通过"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

最新更新