我会这样做的方式如下:
您需要一个起始节点,您将从那里查询接下来的 7 个节点。为了能够找到前 7 个节点,我将引入一个起始根节点。让我们简单地称它为 :Root 。
MATCH (:Root)-[r:NEXT*1..7]->(x)<-[]-(y) RETURN x, y
甚至更简单:
MATCH (:Root)-[r:NEXT*..7]->(x)<-[]-(y) RETURN x, y
:根当然可以是您集合中的任何其他节点,以便从那里获取接下来的七个节点。
这是你想要的吗?
进一步查看以下 neo4j 备忘单,其中有一些很棒的提示:
http://assets.neo4j.org/download/Neo4j_CheatSheet_v3.pdf
问候
编辑
好吧抱歉,我误会你了。
也许这会让你走得更远:
MATCH (n:Node) where n.refId in [1,2,3,4,5,6,7]
MATCH (n2:Node) where n2.refId in [1,2,3,4,5,6,7]
MATCH p=shortestPath((q)-[:NEXT*]-(q2))
return collect(distinct p)
或者如果这些数字是节点 ID,则如下所示:
MATCH (n:Node) where id(n) in [1,2,3,4,5,6,7]
MATCH (n2:Node) where id(n2) in [1,2,3,4,5,6,7]
MATCH p=shortestPath((q)-[:NEXT*]-(q2))
return collect(distinct p)
这实际上将给定节点之间的所有路径作为集合返回。
所以它不会为所有这些节点返回一条路径。
我不知道有这样的功能。
然而,neo4j 浏览器只显示所有所需节点之间的单一路径,因为它具有自动完成功能。因此,如果您想将这些路径连接到单个路径,我认为您必须在代码中构建自己的逻辑。
也许这至少是问题的起点