假设我有一个看起来像变量树的图形。我有Vertex
并且我对最后一点的下落一无所知,除了它id
是0
。我看过一些 Gremlin 用法的例子,但找不到合适的例子——它们基本上都做类似的事情x.out.in.out
,这在我的情况下是不适用的。我也使用 Java 绑定,因此如果您对此事实作出答复,我将不胜感激。
PS也许我应该更具体。我还想收集所有properties
这些节点,所以如果有某种 a reduce
/foldLeft
等,但仅限于pipe
s - 那太好了。
Tinkerpop Toy Graph示例(查找从 vadas [顶点 2] 到 peter [顶点 6] 的路径):
gremlin> g = TinkerGraphFactory.createTinkerGraph()
==>tinkergraph[vertices:6 edges:6]
gremlin> start = g.v(2)
==>v[2]
gremlin> end = g.v(6)
==>v[6]
gremlin> start.as("x").both().loop("x", {it.object != end}, {true}).retain([end]).path()[0]
==>[v[2], v[1], v[3], v[6]]
该查询不是最优的,如果您不限制结果数量,它将永远运行,但它应该回答您的问题。
如果你想要所有属性:
gremlin> start.as("x").both().loop("x", {it.object != end}, {true}).retain([end]).path().transform({ it.collect({ it.map() }) })[0]
==>[{age=27, name=vadas}, {age=29, name=marko}, {name=lop, lang=java}, {age=35, name=peter}]
如果您只需要一个属性:
gremlin> start.as("x").both().loop("x", {it.object != end}, {true}).retain([end]).path().transform({ it.collect({ it.name }) })[0]
==>[vadas, marko, lop, peter]
干杯,丹尼尔