Neo4j 在列表的连续元素之间创建关系

Neo4j 在列表的连续元素之间创建关系,neo4j,cypher,Neo4j,Cypher,我试图用neo4jcypher语言编写一个查询,创建一个按特定条件排序的节点关系链 比如说。我有一个疑问: MATCH (n) WHERE n.some_property = 'something' WITH n ORDER BY n.some_other_property WITH collect(n) as node_list 我需要将节点列表的每个元素与该列表的下一个元素链接起来 例如,如果节点列表包含: [a、b、c、d、e] 结果将是: 创建(a)->[:rel]->(b)->[:r

我试图用
neo4j
cypher语言编写一个查询,创建一个按特定条件排序的节点关系链

比如说。我有一个疑问:

MATCH (n)
WHERE n.some_property = 'something'
WITH n
ORDER BY n.some_other_property
WITH collect(n) as node_list
我需要将
节点列表的每个元素与该列表的下一个元素链接起来

例如,如果节点列表包含:

[a、b、c、d、e]

结果将是:
创建(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

有什么办法吗?

是的!收藏完成后,使用“展开”功能获取一系列索引:

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);