【发布时间】:2021-10-20 07:36:25
【问题描述】:
我有一个包含数百万个节点和边缘数据的数据库,我想获取两个指定节点之间的所有节点和关系数据。 下面是具有 7 个节点和 7 个关系的图的示例数据。
要从第一个节点遍历到第7个节点,我可以使用可变长度关系方法,并且可以获得第一个和第7个节点之间的节点和关系(但是在这种方法中,我们需要知道第一个节点之间的关系和节点的数量和第 7 个节点)。 对于使用可变长度关系方法,我们必须指定我们将获得结束节点的数字,并且它会在一个方向上遍历。 但就我而言,我知道起始节点和结束节点,但不知道它们之间有多少关系和节点。请建议我如何为这种情况编写 Cypher 查询。
我使用了 APOC 生成树过程,它从第 1 个和第 7 个元素返回“路径”,但它不返回节点和关系。我可以使用生成树过程获取节点和关系数据吗?如何获取?
有没有其他方法可以在不使用 APOC 过程的情况下获取所有节点和两个节点之间的关系?
这里是使用 apoc 过程的查询:
MATCH (start:temp {Name:"Joel"}), (end:temp {Name:"Jack"}) CALL apoc.path.spanningTree(start,{terminatorNodes:[end]}) YIELD path return path
注意:在我们的图数据库中,节点可以有多向关系。
[示例节点和关系快照] :https://i.stack.imgur.com/nN9hk.png
【问题讨论】:
-
您有兴趣找到两个节点之间的最短路径吗?
-
是的@Tomaz,我需要两个指定节点之间的路径,但我需要指定路径上的节点和关系作为回报,我没有通过 APOC 程序响应获得。如果您可以帮助我在节点和关系方面获得 APOC 程序响应,这对我将非常有用,或者如果有一个 Cypher 查询可用于我不知道有多少关系和关系的情况,这将更有用节点将在开始节点和结束节点之间。提前谢谢你。
标签: neo4j cypher relationship neo4j-apoc