【发布时间】:2017-03-02 07:58:05
【问题描述】:
我有一个有点独特的场景。我将得到一个节点 A。从节点 A,我想找到到其他一些节点的路径(比如节点集 C)。一旦我得到这些路径集,我想从另一个节点 B(对应于/类似于节点 A)重新运行这些路径,以发现遵循相同路径(如从节点 A 到集合 C) 中的节点。
例如,如果(A) 我有(E),(G) 遵循这些路径:
---[:Rel2]--->(F)---[:Rel1]--->(G)
/
(A)---[:Rel1]--->(E)
那么对于(B),我应该得到(J),(H) 遵循相同的路径,但不应该得到(K),因为它不遵循为(A)返回的任何路径模式:
---[:Rel2]--->(I)---[:Rel1]--->(J)
/
(B)---[:Rel1]--->(H)
\
---[:Rel2]--->(K)
截至目前,我的做法如下:
- 给定 A,运行初始密码以获取所需路径。
- 路径作为
org.neo4j.driver.v1.types.Path的实例返回。每个Path实例本质上是org.neo4j.driver.v1.types.Path.Segment实例的列表。因此,遍历Segment列表以形成每个对应路径的密码字符串。 - 使用密码字符串从 B 执行
MATCH。
这是可行的,但是,从 Segment 类的 Java 列表中形成密码字符串给我一种奇怪的感觉。我不知道这种方法是否正确。还有其他更好看的方法吗?或者这种方法还可以吗?有什么推荐的方法吗?有没有人遇到过类似的情况?
编辑:您可以将第一个图视为(“部分”,因为它没有与实例子路径 (B)---[:Rel2]--->(K) 对应的架构定义)架构和第二个图作为该架构的实例架构。我们首先在 schema 中找到路径,然后在实例上运行它。
【问题讨论】: