宽度格雷姆林中的第一个枚举

我正在尝试使用Gremlin进行广泛的首次枚举,但是我无法找到输出枚举期间观察到的所有步骤的方法。 我只能打印出最后一次迭代的结果。

我的问题是,给定这样的起始节点,我如何使用Gremlin跟踪所有路径(不知道整体深度)并打印出我沿途找到的所有内容?

study=gv('myId') 

我已经尝试过分散方法,循环方法(尽管如果我理解正确,两者似乎都需要事先知道路径的实际长度)

非常感谢!

你没有提供显示你如何使用循环的任何重要代码,但我认为使用正确的参数你可以让它做你想要的:

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

我假设您通过收集/分散以及指向x的循环的第一部分来理解代码。 所以,考虑到这个假设,我将专注于传递给循环的两个闭包。

传递给循环的第一个闭包告诉Gremlin何时突破循环。 通过简单地返回true,你就说要耗尽循环。 根据图表的结构,这可能是不可取的,因为您可能需要等待很长时间才能返回结果。 至少你应该考虑将它设置为不可能高的东西,这样如果你在图中遇到一些周期,你的遍历就会中断。

第二个闭合被称为“发射闭合”。 您可以在这里阅读更多相关内容,但基本上它确定是否应该返回管道中的中间对象(而不仅仅是循环末尾的对象)。 在这种情况下,您可以看到我只是将该值设置为true以便它将在循环的所有步骤中发出所有对象。

Interesting Posts