You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 11:07:39