Neo4j'可变长度关系'的含义是什么?

时间:2018-02-24 03:32:41

标签: neo4j cypher

在页面中 Neo4j Cypher 3.3.1 MATCH

部分'可变长度关系'困惑我。

示例:

MATCH (martin { name: 'Charlie Sheen' })-[:ACTED_IN*1..3]-(movie:Movie) RETURN movie.title

重复3行,重复美国总统'。

如果我改变3比2,只返回一排华尔街'。这是为什么?那部分中minHopsmaxHops的含义是什么?

2 个答案:

答案 0 :(得分:2)

这与模式中允许遍历的关系数有关。

例如,对于社交网络图表,这表示与您的所有朋友匹配:

MATCH (me:Person{id:123})-[:FRIEND]-(friend)

这代表朋友的朋友:

MATCH (me:Person{id:123})-[:FRIEND]-()-[:FRIEND]-(friendOfFriend)

这是相同的事情,但是具有可变长度的关系,表明您想要遍历:FRIEND关系两次。

MATCH (me:Person{id:123})-[:FRIEND*2]-(friendOfFriend)

我们可以设置最小和最大跳数:

MATCH (me:Person{id:123})-[:FRIEND*1..3]-(friend)

这将返回通过遍历至少一个:FRIEND关系,最多3个:FRIEND关系可以到达的所有节点。

如果我们将0设置为下限,那么起始节点me也将包含在friend

的结果中
MATCH (me:Person{id:123})-[:FRIEND*0..3]-(friend)

至于文档中的示例,如果我们更改了该查询以返回路径而不仅仅是结束节点:

MATCH path = (charlie:Person { name: 'Charlie Sheen' })-[:ACTED_IN*1..3]-(movie:Movie)
RETURN path

你会看到有一条长度为1的路径在华尔街的节点上结束,并且有两条长度为3的不同路径以美国总统为终点。

答案 1 :(得分:-1)

它是路径的数量,而不是节点的数量。

1..3表示与另一个节点相匹配的1或2或3步(电影:电影)。