通过父Vertex过滤Gremlin搜索

时间:2018-04-18 13:19:49

标签: java graph-databases gremlin tinkerpop3

我对Gremlin很新。我一直在阅读文档,但仍在努力寻找我的问题的答案。我假设答案很简单,但不幸的是,它与所有不同的API选项有点混淆,例如子图,副作用,如果可能的话,希望得到专家组的一点帮助/澄清。

基本上(作为示例)我有一个如下所示的图表,我首先需要选择' A'然后走过A' A'只是,找出是否有匹配' A3'或者' A4'。

选择第一个Vertex当然很简单,我只需要做一些事情:

.V().has("name", "A")

然而,我不确定我现在如何将我的第二个顶点搜索与“A' A'只要。正如我之前提到的那样,我偶然发现了subgraphs,但是我无法完全掌握如何利用这种能力,或者我是否应该为了我的目的。

我正在使用TinkerPop3和Java 8.

任何帮助将不胜感激!

Example Graph

1 个答案:

答案 0 :(得分:4)

当您使用:g.V().has('name','A')开始遍历时,您将获得" A"顶点。之后添加的任何其他步骤都限制在该顶点之外。因此g.V().has('name','A').out()只能给你" A1"顶点和相关的孩子。

要遍历" A"的所有孩子,您需要repeat()步骤:

g.V().has('name','A').
  repeat(out()).
    until(has('name',within('A3','A4'))

所以,基本上找到" A"然后遍历孩子直到你遇到" A3"或" A4"。

将来,请考虑提供可以粘贴到控制台中的Gremlin脚本来构建示例图 - 这里是example。该形式的示例图非常有用。