我想在输出中包含以下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]。我怎样才能做到这一点?
答案 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]