有没有办法扩展路径直到找到度数为 n 的节点?我有一个起点,想要沿着该路径前进,直到找到一个度数大于 2 的节点(因此它会分叉路径)。本例中的度数为 IN + OUT。我还需要能够过滤关系类型。所以我需要找到一条路径,直到到达度数 > 2 的节点,但只允许关系列表。
一种方法是使用 Neo4j 5.9 中引入的 QPP(量化路径模式)。
此查询将找到一个起始节点(属性 start 设置为 true 的节点),然后展开直到找到一个分叉的节点
MATCH (start {start: true})
MATCH p=(start)(()-->(n WHERE COUNT{(n)--()} < 3))*
RETURN p
请注意,该查询中不包括分叉节点。要包含分叉节点,您只需将其添加到 QPP 之后的路径中
MATCH (start {start: true})
MATCH p=(start)(()-->(n WHERE COUNT{(n)--()} < 3))*()-->()
RETURN p
您可以在此处阅读有关 QPP 的更多信息:
https://neo4j.com/docs/cypher-manual/current/patterns/concepts/#quantified-path-patterns
您还写道您想按关系类型进行过滤。只需将其添加到 QPP 即可完成此操作。假设我们只想查看 :PATH:
类型的关系MATCH (start {start: true})
MATCH p=(start)(()-[:PATH]->(n WHERE COUNT{(n)-[:PATH]-()} < 3))*()-->()
RETURN p