我想使用cypher来获得以下结果: “查找从节点A开始的所有路径,仅在属性”百分比“ 1 大于50的关系之后,路径的末尾是属性'type'= 1且路径末尾具有的节点没有之前指定的其他关系(百分比> 50 ...)“
( 1 :出于性能原因,我正在考虑创建一个单独的关系类型“MY_RELATIONSHIP_50”)
到目前为止,我的Cypher工作正常:
start A = node(...)
match path = (A)-[rels:MY_RELATIONSHIP*]->(B)
where all(rel in rels where rel.percentage! > 50) and B.type = 1
return path
但我无法找到表达“the end of path has no further relationships as specified before (percentage>50 ...)
”
我尝试使用“and not B-->C
”扩展where子句,但我没有找到如何使用percentage > 50
进行限定。
有办法做到这一点吗?
提前多多感谢=)
答案 0 :(得分:1)
您是否正在寻找最长的路径?
所以要么只是按长度排序,要么排在最前面。
否则就像:
start A = node(...)
match path = (A)-[rels:MY_RELATIONSHIP*]->(B)
where all(rel in rels where rel.percentage! > 50) and B.type = 1
AND NONE(r in extract(p in (B-[:MY_RELATIONSHIP]->()) : head(rels(p)) WHERE r.percentage > 50)
return path