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

什么';Neo4j的含义是什么;s';可变长度关系';?,neo4j,cypher,Neo4j,Cypher,在页面中 “可变长度关系”一节让我感到困惑 例如: MATCH(马丁{name:'Charlie Sheen'})-[:在*1..3中扮演]-(电影:电影) 返回电影。标题 返回3行,重复“美国总统” 如果我将3改为2,只返回一行“华尔街”。为什么呢?在本节中,minHops和maxHops的含义是什么?这是路径的数量,而不是节点的数量 1..3表示到另一个匹配节点的1、2或3个步骤(movie:movie)。这与模式中允许遍历的关系数有关 例如,对于社交网络图,这表示与所有朋友的匹配: MA

在页面中

“可变长度关系”一节让我感到困惑

例如:

MATCH(马丁{name:'Charlie Sheen'})-[:在*1..3中扮演]-(电影:电影)
返回电影。标题

返回3行,重复“美国总统”


如果我将3改为2,只返回一行“华尔街”。为什么呢?在本节中,
minHops
maxHops
的含义是什么?

这是路径的数量,而不是节点的数量


1..3表示到另一个匹配节点的1、2或3个步骤(movie:movie)。

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

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

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的不同路径