首页 文章

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

提问于
浏览
0

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

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

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

我想知道Cypher是否可以在上面的例子中计算到最大3跳时 only count specific types of nodes .

例如,在这个节点链中:

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

节点 ah 之间有 7 total hops . 但是,它们之间只有 3 Word hops .

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

1 回答

  • 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
    

相关问题