Cypher如何实现仅计算特定类型节点的最大跳数?

时间:2016-09-26 02:42:23

标签: neo4j cypher graph-databases

我知道在Neo4J中,Cypher可用于根据两个节点之间的最大跳数来过滤结果,如下所示:

MATCH (a:Word)-[relationships*..3]-(b:Word)
RETURN a, relationships, b
LIMIT 5

这将返回两个类型为Word的节点(a和b),并且每个节点的总跳数为4(通过所有节点类型和所有关系类型)。

我想知道Cypher是否可以在上面的示例中计算到最大3跳时仅计算特定类型的节点

例如,在这个节点链中:

(a:Word)---> (b:定义)---> (c:Word)---> (d:定义)---> (e:定义)---> (f:Word)---> (g:定义)---> (H:字)

节点ah之间有 7个总跳数。但是,它们之间只有 3个单词跃点

Cypher有可能以这种方式施加最大跳数吗?

1 个答案:

答案 0 :(得分:1)

您可以使用filter来计算label个节点。例如:

MATCH path = (a:Word)-[relationships*..10]-(b:Word)
WHERE SIZE( FILTER(n IN NODES(path) WHERE 'Word' IN LABELS(n)) ) > 3
RETURN a, relationships, b
LIMIT 5