neo4j cypher:找到所有没有某种传出关系的端节点的路径?

时间:2013-07-04 14:20:45

标签: neo4j cypher

我想使用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进行限定。

有办法做到这一点吗?

提前多多感谢=)

1 个答案:

答案 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