假设我有一个像
这样的树现在盯着顶点8
,我想找到顶点8
的孩子,即{3,10},将它们存储在地图中并再次继续剩余顶点的过程,直到我到达叶节点(在编写查询时树的高度未知)。
我想编写一个执行上述操作的查询,并返回包含这些地图的迭代器。 请帮我写这个查询。
答案 0 :(得分:2)
您可以考虑tree步骤:
gremlin> g = TinkerGraphFactory.createTinkerGraph()
==>tinkergraph[vertices:6 edges:6]
gremlin> t=new Tree();g.v(1).out.tree(t).loop(2){true}
gremlin> t
==>v[1]={v[2]={}, v[3]={}, v[4]={}}
==>v[4]={v[3]={}, v[5]={}}
我没有完全遵循您问题的预期格式部分,因此我不确定上述内容是否完全符合您的要求。您可以根据需要使用一些groovy来转换t
,因为它可以完成大部分开箱即用的工作。
答案 1 :(得分:0)
在GremlinPipeLine中执行相同的查询
Tree tree = new Tree();
new GremlinPipeline(graph).V().has("mgrNo", 814754).out("manager of").tree(tree).loop(2, new PipeFunction<LoopBundle,Boolean>() {
@Override
public Boolean compute(LoopBundle loopBundle) {
return true;
}
}).iterate();
Iterator it = tree.entrySet().iterator();
while (it.hasNext()) {
Map.Entry pair = (Map.Entry)it.next();
System.out.println(pair.getKey() + " = " + pair.getValue());
}
}