我正在使用Neo4j 1.9.RC2,我用WITH测试ORDER BY。 我想要做的是生成动态排名并将当前排序索引存储到每个已排序的节点中。
我有类似的东西:parent- [r:has_child] - > rank_node 我想做点什么:
start n=node(1)
match n-[r:has_child]->rank_node
with rank_node
order by rank_node.score
set rank_node.position = "CURRENT ORDER BY INDEX"
我想要一个从0增加到“n”的计数器......我无法做到这一点......
此处CURRENT ORDER BY INDEX类似于每个节点按顺序返回的当前索引。
我不知道是否可以用cyper做到这一点?这将非常有用,因为我们可以进行大排序并直接插入节点中的位置以便以后直接获取...
答案 0 :(得分:5)
与迈克尔·亨格交谈,我们解决了这个问题:
start n=node(0)
match n-[r:rank]->rank_node
with rank_node, n
match n-[r:rank]->rn
where rn.score <= rank_node.score
with rank_node,count(*) as pos
set rank_node.rank = pos
return rank_node;
有关实例,请参阅:http://console.neo4j.org/?id=d07p7r
答案 1 :(得分:0)
MATCH (n:person)-[r:knows]->(a:phonbook)
RETURN COUNT(*) AS rank,n.mobno,r.name ORDER BY n.mobno desc //rank with relation
答案 2 :(得分:0)
比赛(a:人)
可选的比赛() - [r:knows | knowsyy] - &gt;(a)
返回计数(*)AS等级,a.mobno // //有两个方向排名
人=标签
知道并且知道=关系