gpt4 book ai didi

graph - Neo4J Cypher - 寻找两条路径的交汇点

转载 作者:行者123 更新时间:2023-12-02 02:56:51 24 4
gpt4 key购买 nike

这更多的是一个“如何做”的问题,可以有不同的方法,但试图找到解决此要求的最高效和最有效的方法。

我有一个图表,其中有充当 fork 节点的节点,即它们生成两条路径,这些路径稍后在其他节点相遇,我知道 fork 节点的节点 ID 和属性(下面示例中的节点 A)并想知道两条路径相交的节点(下面例子中的节点 B)。

注意 - 这些路径的长度可以是可变的,即一个路径可能有 6 个节点,而另一个路径只有 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 再次相遇,那么我想让节点 B 知道节点 A,请建议我们如何在 Cypher 中做到这一点。

谢谢,迪佩什

最佳答案

我假设您通过节点 aid 属性知道它,并且它是 1234。您也可能想在此处使用标签。我不确定您是否正在使用它们,所以我将它们排除在外。

MATCH
(a)-[*1..10]->(b),
(a)-[*1..10]->(b)
WHERE a.id = 1234
RETURN b

您也可以返回路径的长度,但这应该会得到结果。另请注意,您可以调整路径的最大长度(本例中为 10)作为查询性能的权衡(这取决于图表的结构)

编辑:

此外,如果这不起作用,您可能需要执行以下操作:

MATCH
path1 = (a)-[*1..10]->(b),
path2 = (a)-[*1..10]->(b)
WHERE a.id = 1234 AND path1 <> path2
RETURN b

关于graph - Neo4J Cypher - 寻找两条路径的交汇点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27632962/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com