路径入图所示,每条边上都有个属性:s,代表持股数量,为一个数值,新建路径
create p=(:COMPANY{value:'Y')<-[:STAKE{s:0.8]-(:COMPANY{value:'A')<-[:STAKE{s:1]-(:COMPANY{value:'B')-[:STAKE{s:1]->(:COMPANY{value:'C')
-[:STAKE{s:1]->(:COMPANY{value:'D')-[:STAKE{s:1]->(:COMPANY{value:'E')-[:STAKE{s:1]->
(:COMPANY{value:'F')-[:STAKE{s:0.9]->(:COMPANY{value:'G')
return p
match (n:COMPANY{value:'B'),(m:COMPANY{value:'G')
create p=(n)-[:STAKE{s:0.2]->(:COMPANY{value:'C1')
-[:STAKE{s:1]->(:COMPANY{value:'D1')-[:STAKE{s:1]->(:COMPANY{value:'E1')-[:STAKE{s:1]->
(:COMPANY{value:'F1')-[:STAKE{s:1]->(m)
return p
目的:B到G路径(有两条,路径1和路径2),计算每条路径上的边相乘,在把路径1得到的结果和路径2得到的结果相加,作为B到G的最终值1,同样,计算B到Y同一路径上每条边相乘后,不同路径的累加结果,作为最终值2,然后同时输出最终值1和最终值2
尝试计算
match p1=(n:COMPANY{value:'B'})-[:STAKE*1..5]-(n:COMPANY{value:'G'}),p2=n:COMPANY{value:'B'})-
[:STAKE*1..5]-(n:COMPANY{value:'Y'}) with p1,reduce(total=1.0, n in relationships(p1)|total*n.S) as acc return sum(acc)
发现结果 不对,然后直接
match p1=(n:COMPANY{value:'B'})-[:STAKE*1..5]-(n:COMPANY{value:'G'}),p2=n:COMPANY{value:'B'})-
[:STAKE*1..5]-(n:COMPANY{value:'Y'}) return relationships(p1)
发现返回的边重复了很多,不知怎么回事?还有就是,怎么能同时计算路径p1的结果和p2的结果,同时输出?