3

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

如何使用 Gremlin 找到与给定分支直接或间接相关的所有叶子?

我让它在 Cypher 中工作:

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

这里的*1..2意思是“朋友和朋友的朋友”。

我认为也许LoopV是前进的方向,但我只是得到一个Exception

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

4

1 回答 1

3

您可以在 Gremlin 1.4+ 中执行以下操作。

g.v(1).out('contains').loop(1){true}{it.out('contains').count() == 0}

这说:

  1. 从 id 为 1 的顶点开始
  2. 采取传出的“包含”边缘。
  3. 循环 out('contains') 部分。
  4. 循环“无限”(确保你的树没有循环)
  5. 只发射那些没有更多传出“包含”边缘的顶点。(即叶子)

然而,看看你想要从 Cypher 得到什么,看起来你只需要 2 个步骤。因此,要做到这一点,只需执行以下操作:

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

也许我误解了你的问题——不管怎样,这应该给你足够的玩。

于 2012-02-29T01:20:31.090 回答