如何使用Cypher从Neo4j中的时间序列表构造线图?
如何使用Cypher从Neo4j中的时间序列表构造线图 例如: 这是一张桌子如何使用Cypher从Neo4j中的时间序列表构造线图?,neo4j,cypher,Neo4j,Cypher,如何使用Cypher从Neo4j中的时间序列表构造线图 例如: 这是一张桌子 id | event | timestamp ---------------------- 1 | event1 | 10:00 AM 1 | event2 | 10:15 AM 1 | event3 | 10:30 AM . | . | . . | . | . . | . | . 1 | event100 | 8:00 PM 2
id | event | timestamp
----------------------
1 | event1 | 10:00 AM
1 | event2 | 10:15 AM
1 | event3 | 10:30 AM
. | . | .
. | . | .
. | . | .
1 | event100 | 8:00 PM
2 | event25 | 10:10 AM
2 | event30 | 10:20 AM
2 | event150 | 11:20 AM
. | . | .
. | . | .
. | . | .
所以我想按id对事件进行分组,并根据时间戳对它们进行排序,然后为每个组构建这样的图
event1 -> event2 -> ... -> event100
及
如果您愿意将添加到数据库中,那么您所描述的是一个可以使用apoc.nodes.link创建的链接列表 一些示例数据:
MERGE (e1: Event { id: 1, event: 'Event1', timestamp: localdatetime('20200323T10:00:00') })
MERGE (e2: Event { id: 1, event: 'Event3', timestamp: localdatetime('20200323T10:20:00') })
MERGE (e3: Event { id: 1, event: 'Event2', timestamp: localdatetime('20200323T10:05:00') })
MERGE (e4: Event { id: 2, event: 'Event5', timestamp: localdatetime('20200323T10:08:00') })
MERGE (e5: Event { id: 2, event: 'Event4', timestamp: localdatetime('20200323T10:00:00') })
然后,我们可以对链接列表进行分组、排序和创建:
MATCH (e: Event)
WITH e ORDER BY e.timestamp
WITH e.id as id, collect(e) as nodes
CALL apoc.nodes.link(nodes, 'PRECEDES')
RETURN nodes
MATCH (e: Event)
WITH e ORDER BY e.timestamp
WITH e.id as id, collect(e) as nodes
CALL apoc.nodes.link(nodes, 'PRECEDES')
RETURN nodes