目前有这样一个需求:
- 关系都是Relation
- 找到 A 和 F 的路径,
- 可以经过中间的D,A 和 D是指定方向的,D 和F 也是指定方向的
A -> B -> C->【D】 <-E <-F
- 也可以不经过中间的D, A F 有存在的直接关系
A <-F
用Match 语句,效果特别差。
p=(c1:Node)-[:GLF*0..3]->(:Node)<-[:GLF*0..3]-(c2:Node)
请问还有其他方式实现吗?
目前有这样一个需求:
A -> B -> C->【D】 <-E <-F
A <-F
用Match 语句,效果特别差。
p=(c1:Node)-[:GLF*0..3]->(:Node)<-[:GLF*0..3]-(c2:Node)
请问还有其他方式实现吗?
是找到 A 和F 之间的一条路径就好,还是要找到 A和F之间的所有路径
满足条件的所有路径
如果 允许 路径中的边可以重复 可以使用 find all path from A to F over Relation bidirect up to 5 steps yield path as p
如果不允许 路径中的边重复,可以使用 find shortest path from A to F over Relation bidirect up to 5 steps yield path as p
或者 你可以 find all path from A to D over relation upto 3 steps yield path as p
find all path from F to D over relation upto 2 steps yield path as p
运行着两条 然后路径自己在拼一下
bidirect 会出现这种情况吧? B 的方向指向A 这个是不需要的?
A <- B -> C->【D】 <-E <-F
问题是 不知道D 是否存在,它的vid 又是多少
试试
match p1 = (c1:Node)-[:GLF*0..3]->(b:Node)
optional match p2 = (b)<-[:GLF*0..3]-(c2:Node)
return p1, p2
好的
仔细想了下,是不是下面两点存在问题
p2 不存在的话,第二列会为 NULL ,可以直接排除掉
c1 和c2的直接关系 可以通过go语句找出来
确实,这样可以的。
浙ICP备20010487号