给定下图(其中所有关系都具有FOLLOWS
类型),我们如何获得结果,以便根据给定节点的上一个和下一个节点进行分组?
H->G->E->D
->F
- 其中H跟随G
- 其中G跟在E和F之后。
- E跟随D
因此,给定G的一些性质,期望结果如下:[{H}, {G}, {E, F}, {D}]
尝试:
MATCH (prev:Person)<-[:FOLLOWS *0..]-(p:Person)<-[:FOLLOWS *0..]-(next:Person) WHERE p.name ='G' RETURN collect(prev), p, collect(next) as result
2条答案
按热度按时间klr1opcd1#
从你的问题来看,似乎有两种解决方案。
为了说明我的意思,我将使用这个稍微复杂一点的图,其中包括
H
下游的FOLLOWS
的合并:要按长度对从
Person
到name = 'H'
的每条路径进行分组,并多次显示相同的Person
(因为从H
到D
的路径不止一条),请使用以下命令:测试结果:
如果你想让每个人都出现一次,你可以使用
shortestPath
函数:测试结果:
enyaitl32#
你的描述和你的例子并不完全相同:你说“给定节点的上一个和下一个节点”,你的例子有两个集合:next和after next
给定以下节点
下面是一个可能查询
这是另一个查询