我需要能够创建与每个事件之间的一系列事件,以描述事件的继承。我知道我可以按时间戳顺序创建其节点ID的有序列表,即
MATCH (ch:Checkin)
WITH ch
ORDER BY ch.timestamp ASC
WITH collect(id(ch)) AS checkins
我所追求的是使用此节点ID列表来在连续中创建关系的最佳方法。
checkin_0< -follows- checkin_1< -follows- checkin_2等
您可以使用RANGE
和UNWIND
在循环中枚举检查数:
MATCH (ch:Checkin)
WITH ch ORDER BY ch.timestamp ASC
WITH COLLECT(ch) AS checkins
UNWIND RANGE(1, size(checkins)-1) AS i
WITH checkins[i-1] AS prev,
checkins[i] AS next
MERGE (prev)<-[f:FOLLOWS]-(next)
RETURN prev, f, next
您还可以查看安装和使用APOC过程。有一个称为apoc.nodes.link()
的过程,该过程采用集合和关系类型字符串,并按顺序创建每个节点之间的关系。
MATCH (ch:Checkin)
WITH ch
ORDER BY ch.timestamp DESC
WITH collect(ch) AS checkins
CALL apoc.nodes.link(checkins, 'FOLLOWS')
RETURN checkins