假设我的图形看起来像一个变量arity的树。我有Vertex
,除了id
为0
之外,我对最后一点的位置一无所知。我已经看到了Gremlin用法的一些例子,但是找不到合适的例子 - 它们基本上都是x.out.in.out
之类的东西,等等,这在我的情况下是不适用的。我也使用Java绑定,所以如果你的答案是关于这个事实,我将不胜感激。
P.S。也许我应该更具体一点。我还想收集所有properties
个节点,因此如果存在某种reduce
/ foldLeft
等,但仅适用于pipe
s - 那真是太棒了。
答案 0 :(得分:0)
Tinkerpop Toy Graph的示例(找到从vadas [vertex 2]到peter [vertex 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]
干杯, 丹尼尔