如何在Neptune Gremlin收集路径时打破循环
问题:打破Gremlin遍历中的节点循环,获取指定路径
我有如下结构的图,可通过以下Gremlin语句创建:
g.addV("Person").property(T.id, "1").as("p1") .addV("Person").property(T.id, "2").as("p2") .addV("Person").property(T.id, "3").as("p3") .addV("Person").property(T.id, "4").as("p4") .addV("Person").property(T.id, "5").as("p5") .addV("Person").property(T.id, "6").as("p6") .addV("Person").property(T.id, "7").as("p7") .addE("TalksTo").from("p1").to("p2").property(T.id, "a") .addE("TalksTo").from("p2").to("p3").property(T.id, "b") .addE("TalksTo").from("p3").to("p2").property(T.id, "c") .addE("TalksTo").from("p2").to("p4").property(T.id, "d") .addE("TalksTo").from("p4").to("p5").property(T.id, "e") .addE("TalksTo").from("p5").to("p7").property(T.id, "f") .addE("TalksTo").from("p6").to("p5").property(T.id, "g") .addE("TalksTo").from("p3").to("p6").property(T.id, "h")
我希望遍历该图,获取以下两条路径:
7 -> 5 -> 4 -> 2 -> 1 7 -> 5 -> 6 -> 3 -> 2 -> 1
核心需求是打破节点2和3之间的循环,避免遍历陷入死循环。我尝试了如下查询,但未得到预期结果:
g.V("7") .repeat( as("source").inE("TalksTo").outV().where(neq("source")) ) .until(or( inE().hasLabel("TalksTo").count().is(0), loops().is(10), cyclicPath() )) .path() .toList();
请问是否需要通过子图来解决这个问题?
内容的提问来源于stack exchange,提问作者spc16670
相关产品推荐
相关产品推荐

