图遍历:如何使用Gremlin查询“朋友和朋友的朋友”?

3

在我的图数据库中,我有分支和叶子。分支可以“包含”叶子,分支也可以“包含”分支。

如何使用Gremlin,在给定的分支下查找所有与其直接或间接相关的叶子?

我在Cypher中实现了这个功能:

START v=node(1) MATCH v-[:contains*1..2]->i RETURN v,i

其中的*1..2表示“朋友和朋友的朋友”。

我曾以为LoopV是一个很好的解决方案,但我遇到了一个Exception

从JsonReader读取JArray时出错。当前JsonReader项不是数组:String

1个回答

3
你可以在 Gremlin 1.4+ 中执行以下操作。
g.v(1).out('contains').loop(1){true}{it.out('contains').count() == 0}

这里说的是:

  1. 从id为1的定点开始
  2. 取出"包含"类型的外向边。
  3. 循环处理"包含"类型的外向边。
  4. 无限循环(确保你的树没有回路)
  5. 只输出被触及但没有更多"包含"类型的外向边的顶点。(即叶子节点)

然而,根据您在Cypher中所需的内容,看起来您只需要2步。因此,只需执行以下操作:

g.v(1).out('contains').loop(1){it.loops < 3}

也许我误解了你的问题 --- 无论如何,这应该足够为你提供一些有趣的内容。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接