gpt4 book ai didi

java - 如何为这种情况编写 Cypher 查询?

转载 作者:塔克拉玛干 更新时间:2023-11-01 23:05:31 24 4
gpt4 key购买 nike

我有一个如下图所示的图表。 enter image description here

一个 WAR 可以发布多个服务,也可以依赖多个服务。

我的要求是获取给定 WAR 的依赖 WAR。

我知道如何编写查询来获取第一层依赖。

MATCH (w:WAR)-[:PUBLISH]->(s:SERVICE)<-[:DEPENDSON]-(otherWar:WAR)

我的问题是如何为给定的 WAR 获取多层依赖。

在这种情况下,在war1 和war3 之间,有两个PUBLISH/DEPENDSON 关系。如何用可变长度关系描述这种关系?

最佳答案

[更新]

找出一场 war 如何依赖于另一场 war

假设 PUBLISHDEPENDSON 关系总是从 WAR 节点开始并在 SERVICE 节点结束,我相信这个查询会找到 war3(最终)依赖于 war1 的所有路径。

MATCH p=(w:WAR {name:'war1'})-[:PUBLISH]->
()-[:PUBLISH|DEPENDSON*0..]-()
<-[:DEPENDSON]-(otherWar:WAR {name:'war3'})
RETURN p;

使用与@GaborSzarnyas 提供的相同示例数据,上述查询产生以下结果:

+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| p |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| [Node[6]{name:"war1"},:PUBLISH[6] {},Node[9]{name:"s1"},:DEPENDSON[8] {},Node[7]{name:"war2"},:PUBLISH[10] {},Node[11]{name:"s3"},:DEPENDSON[11] {},Node[8]{name:"war3"}] |
| [Node[6]{name:"war1"},:PUBLISH[7] {},Node[10]{name:"s2"},:DEPENDSON[9] {},Node[7]{name:"war2"},:PUBLISH[10] {},Node[11]{name:"s3"},:DEPENDSON[11] {},Node[8]{name:"war3"}] |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

寻找 war 的依赖性

此查询应该找到所有依赖于 war1 的不同 WAR 节点:

MATCH (w:WAR {name:'war1'})-[:PUBLISH]->()-[:PUBLISH|DEPENDSON*0..]-()<-[:DEPENDSON]-(otherWar:WAR)
RETURN DISTINCT otherWar;

结果是:

+----------------------+
| otherWar |
+----------------------+
| Node[7]{name:"war2"} |
| Node[8]{name:"war3"} |
+----------------------+

关于java - 如何为这种情况编写 Cypher 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40858234/

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