如何在gremlin中编写for循环?

时间:2012-11-17 02:23:55

标签: java neo4j gremlin

如何在gremlin中编写for循环?这就是我试过的:

for i=0;i<10:i++:
  println hello number i

我还尝试迭代节点并在每个节点上调用一个函数,例如(count):

gremlin> g.v(782).in
==> v[2746934]
==> v[2581232]
==> v[1554286]
==> v[780]
gremlin> g.v(78).in.loop(2){it.loops < 4}.count()
==> class java.lang.NullPointerException : null

我的主要目标是执行for循环并打印没有inE的节点的值。这意味着它们的程度为零。

2 个答案:

答案 0 :(得分:3)

filter{!it.inE.hasNext()}效率更高,因为不需要完整计数/迭代。

答案 1 :(得分:2)

如果你想迭代图中的所有节点来计算边数中没有多少节点,你可以做类似的事情:

gremlin> g = TinkerGraphFactory.createTinkerGraph()
==>tinkergraph[vertices:6 edges:6]
gremlin> g.V.filter{!it.inE.hasNext()}.count()
==>2

如果您想执行一些副作用,例如执行“打印”,请使用副作用步骤:

gremlin> g.V.filter{!it.inE.hasNext()}.sideEffect{println it.name}
marko
==>v[1]
peter
==>v[6]

请注意,由于Gremlin终端已经为您打印,因此打印两次,因此如果您在终端中,您可能也会这样做:

gremlin> g.V.filter{!it.inE.hasNext()}.name                       
==>marko
==>peter