Gremlin BFS枚举包括root

时间:2016-06-03 20:30:14

标签: gremlin

我想在输出中包含以下Gremlin表达式的根节点:

gremlin> g = TinkerGraphFactory.createTinkerGraph()
==>tinkergraph[vertices:6 edges:6]
gremlin> g.v(1).as('x').out.loop('x'){true}{true}
==>v[2]
==>v[4]
==>v[3]
==>v[5]
==>v[3]

因此输出也包括v [1]。我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:3)

以下是TinkerPop 2.x中的一些可能的解决方案。第一个使用store()的解决方案:

gremlin> x=[];g.v(1).store(x).as('x').out.loop('x'){true}{true}.store(x).iterate();x        
==>v[1]
==>v[3]
==>v[2]
==>v[4]
==>v[3]
==>v[5]

这是第二个没有明确强制创建使用transform和闭包的外部变量:

gremlin> g.v(1).transform{[it] + (it._().as('x').out.loop('x'){true}{true}.toList())}.scatter()    
==>v[1]
==>v[3]
==>v[2]
==>v[4]
==>v[3]
==>v[5]

对于使用TinkerPop 3.x的用户,只需将emit()放在repeat()前面:

gremlin> g.V(1).emit().repeat(out())
==>v[1]
==>v[3]
==>v[2]
==>v[4]
==>v[5]
==>v[3]