根据边缘属性对路径进行排序
Sort paths based on Edge properties
根据Edge属性和Dedup
对遍历路径进行排序
您好,
我有一个内存图,我想根据 Edge 属性 对路径进行排序,并且还要删除通向同一目的地的路径。
例如
String NAME = "name";
String id = "id";
g.addV().property(id, 1).property(NAME, "u1").as("u1")
.addV().property(id, 2).property(NAME, "u2").as("u2")
.addV().property(id, 3).property(NAME, "u3").as("u3")
.addV().property(id, 4).property(NAME, "u4").as("u4")
.addE(rel).from("u2").to("u1").property("order", 2)
.addE(rel).from("u3").to("u1").property("order", 1)
.addE(rel).from("u4").to("u2").property("order", 3)
.addE(rel).from("u4").to("u3").property("order", 4)
.iterate();
我想要实现的是一种遍历,它只给我一条路径,即
顶点=[路径[u1,u3,u4]]。
我尝试使用下面的 gremlin。
List<Path> maps = g.V()
.has("id", 1)
.repeat(in()
.simplePath())
.until(inE().count().is(0))
.order().by(outE("rel").values("order"),Order.asc)
.path().by("name")
.toList();
但是排序不会发生。它给了我两条路:
顶点 = [路径[u1, u2, u4], 路径[u1, u3, u4]]
但我正在寻找输出 vertices = [path[u1, u3, u4]]
我是 gremlin 的新手,运行 没有可供尝试的选项。
有人可以帮忙吗?
使用toList
将为您提供所有可通过的遍历。在你的情况下,你确实订购了答案,但并没有只拿第一个。
您应该添加 limit
步骤:
...
.limit(1).toList()
或者您可以使用 next()
而不是 toList()
g.V()
.has("id", 1)
.repeat(in("rel") .order() .by(outE().values("order"), Order.asc) .simplePath() )
.until(inE().count().is(0))
.dedup()
.path()
.by("name")
.toList() ;
根据Edge属性和Dedup
对遍历路径进行排序您好, 我有一个内存图,我想根据 Edge 属性 对路径进行排序,并且还要删除通向同一目的地的路径。
例如
String NAME = "name";
String id = "id";
g.addV().property(id, 1).property(NAME, "u1").as("u1")
.addV().property(id, 2).property(NAME, "u2").as("u2")
.addV().property(id, 3).property(NAME, "u3").as("u3")
.addV().property(id, 4).property(NAME, "u4").as("u4")
.addE(rel).from("u2").to("u1").property("order", 2)
.addE(rel).from("u3").to("u1").property("order", 1)
.addE(rel).from("u4").to("u2").property("order", 3)
.addE(rel).from("u4").to("u3").property("order", 4)
.iterate();
我想要实现的是一种遍历,它只给我一条路径,即
顶点=[路径[u1,u3,u4]]。
我尝试使用下面的 gremlin。
List<Path> maps = g.V()
.has("id", 1)
.repeat(in()
.simplePath())
.until(inE().count().is(0))
.order().by(outE("rel").values("order"),Order.asc)
.path().by("name")
.toList();
但是排序不会发生。它给了我两条路: 顶点 = [路径[u1, u2, u4], 路径[u1, u3, u4]]
但我正在寻找输出 vertices = [path[u1, u3, u4]]
我是 gremlin 的新手,运行 没有可供尝试的选项。 有人可以帮忙吗?
使用toList
将为您提供所有可通过的遍历。在你的情况下,你确实订购了答案,但并没有只拿第一个。
您应该添加 limit
步骤:
...
.limit(1).toList()
或者您可以使用 next()
而不是 toList()
g.V()
.has("id", 1)
.repeat(in("rel") .order() .by(outE().values("order"), Order.asc) .simplePath() )
.until(inE().count().is(0))
.dedup()
.path()
.by("name")
.toList() ;