1

我正在使用 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 就像是按 order by 返回的每个节点的当前索引。

我不知道 cyper 是否可以做到这一点?这将非常有用,因为我们可以进行大排序并直接在节点中插入位置以便以后直接获取它......

4

3 回答 3

5

与 Michael Hunger 交谈后,我们解决了这个问题:

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

于 2013-05-27T12:26:03.973 回答
0
MATCH (n:person)-[r:knows]->(a:phonbook)
RETURN COUNT(*) AS rank,n.mobno,r.name ORDER BY n.mobno desc  //rank with relation
于 2014-08-04T11:40:34.927 回答
0

MATCH (a:person) OPTIONAL MATCH ()-[r:knows|knowsyy]->(a)
RETURN COUNT(*) AS rank,a.mobno // //有两个方向的排名

人=标签

知道和知道=关系

于 2014-08-04T11:45:33.717 回答