2014-10-09 100 views
0

我想遍歷「開始節點」和「結束節點」之間的關係。 的確,我的暗號要求:迭代通過Neo4j關係並返回關係屬性的最小值

MATCH (ar1:Article)-[:PART_OF]->()-[:SERIES]->(s1), 
(ar2:Article)-[:PART_OF]->()-[:SERIES]->(s2), 
(ar1)-[:CREATOR]->(au1:Author), 
(ar2)-[:CREATOR]->(au1:Author), 

p1 = (au1)-[CONTRIBUTOR*]->(au2:Author) 

WITH REDUCE (edge IN relationships(p1)|weight + 1/edge.fdegree) AS 
strength_au1_au2_p1,ar1 AS ar1,s1 AS s1,ar2 AS ar2,s2 AS s2,au1 AS au1,au2 AS au2 

WHERE s1.name='WWW' AND s2.name='Pods' AND ar2.year >2010.0 AND ar1.year >2010.0 
AND strength_au1_au2_p1<5.0 

RETURN ar1,s1,ar2,s2,au1,au2,ar1.year AS calc_fuzzy_ar1_year_recent,ar2.year AS 
calc_fuzzy_ar2_year_recent,strength_au1_au2_p1 AS calc_fuzzy_length_p1_short** 

現在我想通過貢獻者*關係(在P1)進行迭代,並得到它的每一個「fdegree」並返回的最低值(fdegree)在p1中的關係。

謝謝大家

回答

0

試試這個:

MATCH (au1:Author)<-[:CREATOR]-(ar1:Article)-[:PART_OF]->()-[:SERIES]->(s1), 
     (au2:Author)<-[:CREATOR]-(ar2:Article)-[:PART_OF]->()-[:SERIES]->(s2) 
WHERE s1.name='WWW' AND s2.name='Pods' AND ar2.year >2010.0 AND ar1.year >2010.0 
WITH au1,au2,ar1,ar2,s1,s2 
MATCH (au1)-[rels:CONTRIBUTOR*]->(au2:Author) 
WHERE REDUCE (weight = 0, edge IN rels | weight + 1/edge.fdegree) < 5.0 
RETURN au1,au2,ar1,ar2,s1,s2, 
     REDUCE (weight = 1000000, edge IN rels | 
       case when weight < edge.fdegree then weight else edge.fdegree end) as min_degree