这更像是一个“如何”的问题,可能有不同的方法,但试图找到最有效和最有效的方法来解决这个要求 .
我有一个图表,其中有节点作为fork节点,即它们产生两个路径,这些路径后来在其他节点相遇,我知道fork节点的节点id和属性(下面的例子中的Node A)并且想要知道两条路径相遇的节点(前面的节点B) .
注意 - 这些路径可以是可变长度的,即一个可以有6个节点而另一个只有2个节点,例如2个节点 .
NodeA -[]-> Node 1 -[]-> Node 2 -[]-> Node 3 -[]-> Node 4 -[]-> Node 5 -[]-> Node 6 -[]-> Node B -[]-> Node C -[]-> Node D -[]-> Node E
NodeA -[]-> Node 7 -[]-> Node 8 -[]-> Node B -[]-> Node C -[]-> Node D -[]-> Node E
因此,如果您看到节点A产生两个路径,最终在节点B处再次相遇,那么我想让Node B了解节点A,请提示我们如何在Cypher中执行此操作 .
谢谢,Deepesh
2 回答
我将假设您通过它的
id
属性知道节点a
并且它是1234
. 您也可以在此处使用标签 . 我是否正在使用它们,所以我把它们排除了 .您也可以返回路径的长度,但这应该可以得到结果 . 另请注意,您可以调整路径的最大长度(在此示例中为
10
)作为查询性能的权衡(取决于图形的结构)编辑:
此外,如果这不起作用,您可能需要这样做:
我的问题的答案如下(感谢Brian - 用LIMIT 1更新他的答案)
添加LIMIT 1仅返回交叉点节点,否则它也返回交叉点节点后面的所有节点 .