2014-09-19 1 views
0

저는 Cypher를 처음 사용합니다.트리 그래프에서 부모의 각 노드 수를 계산하십시오.

NEO4J에 내장 된 계층 적 트리가 있는데 각 노드에 부모 노드 수를 포함하는 "깊이"속성을 설정해야합니다. 해당 속성을 설정/업데이트 할 수있는 단일 사이퍼 쿼리가 있습니까? 이 나무, a.depth = 0, b.depth = 1, c.depth = 1, d.depth = 2, e.depth = 2에 따라서

 a 
    /\ 
    b c 
/\ 
d e 

등등 ...

감사합니다.

답변

2

당신은 경로를 변수를 할당하고 길이 사용할 수 있습니다 종류,

MATCH (a:MyLabel)<-[r:*..20]-(parent:MyLabel) 
WITH a, count(r) AS parents 
SET a.depth = parents 

하지 빠르게 내 데이터 :

MATCH p=(a:MyLabel {key:''value'})-[*..20]->(x) 
SET x.depth = length(p) 
+1

답변을 얻으려면 편집해야합니다. OP의 노드에 깊이를 설정하거나 깊이와 길이의 연결을 설명하지 마십시오 – FrobberOfBits

+0

유효 지점 :-) –

+1

안녕하세요 OP, 다른 한 점 여기 - 이것은 당신이 잘 행동 한 나무라고 가정합니다. 트리에 사이클이 있거나 그렇지 않으면 트리가 아닌 경우이 방법은 올바르게 작동하지 않습니다. 그러므로 데이터가 깨끗하고 실제로 계층을 나타내야합니다. – FrobberOfBits

0

스테판의 대답은 잘 작동하지만, 여기에 또 다른 내가 찾은 방법을 수백 개의 노드에서 동일한 성능을 보입니다.

관련 문제