将路径扩展至具有一定度数的节点

问题描述 投票:0回答:1

有没有办法扩展路径直到找到度数为 n 的节点?我有一个起点,想要沿着该路径前进,直到找到一个度数大于 2 的节点(因此它会分叉路径)。本例中的度数为 IN + OUT。我还需要能够过滤关系类型。所以我需要找到一条路径,直到到达度数 > 2 的节点,但只允许关系列表。

neo4j cypher neo4j-apoc
1个回答
0
投票

一种方法是使用 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
© www.soinside.com 2019 - 2024. All rights reserved.