在Gremlin中创建从一个遍历到另一个遍历的边



我在Java中使用Gremlin API。假设我们有一个到person的遍历和另一个到位置的遍历,这两个遍历相当长,并且依赖于第一个:

GraphTraversal<?, Vertex> persons = g.V().has("prop", "value");
GraphTraversal<?, Vertex> locations = persons.out("place").has(..)..;

现在我想用直接链接将每个人与对应的位置连接起来,考虑到这些边中的一些已经存在。

在Java中使用Gremlin API做这样的链接,哪个策略是好的?

我找不到一种简单的方法来链接两个具有多对多关系的顶点流。但是,获取对象集并创建edge in循环通常是一对多的,对我来说是有效的:

Set<Object> personVertexIds = persons.id().toSet();
personVertexIds.forEach(id -> {
GraphTraversal<Vertex, Vertex> person = g.V(id).as("p");
GraphTraversal<?, Vertex> locations = persons.out("place").has(..)..;
locations.coalesce(inE("link").where(outV().where(P.eq("p"))),
addE("link").from("p")).property("prop", value);
});

最新更新