2015-12-12 63 views
3

我試着寫在創建節點的關係鏈,通過一定的條件進行排序neo4j暗號語言查詢的連續元素之間的關係。創建列表

例如。我有這個疑問:

MATCH (n) 
WHERE n.some_property = 'something' 
WITH n 
ORDER BY n.some_other_property 
WITH collect(n) as node_list 

我需要的node_list的每一個元素與列表中的下一個元素聯繫起來。

例如,如果node_list包含:

[a, b, c, d, e]

結果將是: CREATE (a)->[:rel]->(b)->[:rel]->(c)->[:rel]->(d)->[:rel]->(e)

所以最終的查詢將是:

MATCH (n) 
WHERE n.some_property = 'something' 
WITH n 
ORDER BY n.some_other_property 
WITH collect(n) as node_list 
CREATE LINKS OF CONSECUTIVE node_list 

有沒有辦法做到它?

回答

2

沒錯!收集完成後,使用UNWIND獲取一系列索引:

MATCH (n) 
WHERE n.some_property = 'something' 
WITH n 
ORDER BY n.some_other_property 
WITH COLLECT(n) as node_list 
UNWIND RANGE(1, SIZE(node_list) - 1) AS idx 
WITH node_list[idx - 1] AS from, node_list[idx] AS to 
CREATE (from)-[:NEXT]->(to);