如何使用 Until 和 In 递归搜索 Gremlin TinkerPop 树

How to recursively search UP a Gremlin TinkerPop tree using Until and In

我在 Gremlin 服务器上有一个 TinkerPop 图表,我正在尝试从一片叶子递归搜索一棵树,直到找到根。

给定一棵看起来像这样的树 我可以通过此查询已知货件中的物品和包裹。

g.V("MyShipment").repeat(out().not(hasLabel("contracted", "contains")).simplePath()).until(outE().count().is(0)).path()

但是尝试反向操作失败

g.V("MyItem2").repeat(in().not(hasLabel("contracted", "contains")).simplePath()).until(inE().count().is(0)).path()

org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed: Script61.groovy: 1: unexpected token: in @ line 1, column 23. g.V("MyItem2").repeat(in().not(hasLabel("contracted","contains")).simplePath()).until(inE().count().is(0)).path() ^

1 error

有没有通过 In Edges 递归查找树的方法?

in 关键字是 Groovy 中的保留字。尝试使用

g.V("MyItem2").
  repeat(__.in().not(hasLabel("contracted","contains")).simplePath()).
  until(inE().count().is(0)).
  path()

请注意,您也可以将查询写为

g.V("MyItem2").
  repeat(__.in().not(hasLabel("contracted","contains")).simplePath()).
  until(__.not(__.in())).
  path()