Gremlin 给定一个起点,在不知道最后一个点的情况下,如何遍历图形?

Gremlin 给定一个起点,在不知道最后一个点的情况下,如何遍历图形?,gremlin,orientdb,tinkerpop,Gremlin,Orientdb,Tinkerpop,假设我有一个图形,看起来像一个可变算术树。我有顶点,除了它的id是0之外,我不知道最后一点的任何位置。我见过一些使用Gremlin的例子,但找不到合适的例子——它们基本上都做了类似于x.out.in.out之类的事情,这在我的例子中是不适用的。我也使用Java绑定,因此如果您能回答这个问题,我将不胜感激 顺便说一句,也许我应该更具体一些。我还想收集该节点的所有属性,因此如果存在某种reduce/foldLeft等,但仅限于管道s-那就太好了。示例(找到从vadas[vertex 2]到peter

假设我有一个图形,看起来像一个可变算术树。我有
顶点
,除了它的
id
0
之外,我不知道最后一点的任何位置。我见过一些使用Gremlin的例子,但找不到合适的例子——它们基本上都做了类似于
x.out.in.out
之类的事情,这在我的例子中是不适用的。我也使用Java绑定,因此如果您能回答这个问题,我将不胜感激

顺便说一句,也许我应该更具体一些。我还想收集该节点的所有
属性
,因此如果存在某种
reduce
/
foldLeft
等,但仅限于
管道
s-那就太好了。

示例(找到从vadas[vertex 2]到peter[vertex 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]
干杯,
丹尼尔

谢谢你,丹尼尔。
两者都是什么意思?我的意思是,Java API中的模拟是什么,
bothV
?参见:
gremlin> start.as("x").both().loop("x", {it.object != end}, {true}).retain([end]).path().transform({ it.collect({ it.name }) })[0]
==>[vadas, marko, lop, peter]