Gremlin 获取具有特定开始和结束节点的边

Gremlin get Edge with specific start and end node

我正在使用 Gremlin 来处理 Titan Graph。 我正在努力寻找一种方法来建立非常具体的关系。

我有标签、属性和可能的​​开始和结束节点列表。

我想要所有的关系都符合这个。

我已经有了这个来获取所有匹配标签的关系 属性:

GraphTraversal<Edge, Edge> tempOutput = g.E().hasLabel(relationshipStorage.getId());

            if(relationshipStorage.getProperties() != null)
            {
                for (Map.Entry<String, Object> entry : relationshipStorage.getProperties().entrySet())
                {
                    if (tempOutput == null)
                    {
                        break;
                    }
                    tempOutput = tempOutput.has(entry.getKey(), entry.getValue());
                }
            }

但我没有找到一种方法来获取它的特定开始和结束节点。 我不想在两个节点之间获得多条边。 我只想要一个具有特定顶点的边。

查看 Between Vertices 配方并从那里扩展。例如,假设您想要找到 ID 为 1 和 2 的两个顶点之间的边。进一步假设您只想要 "knows" 具有 "weight" 属性 大于 0.0.[=12 的边=]

gremlin> graph = TinkerFactory.createModern()
==>tinkergraph[vertices:6 edges:6]
gremlin> g = graph.traversal()
==>graphtraversalsource[tinkergraph[vertices:6 edges:6], standard]
gremlin> g.V(1).bothE().where(otherV().hasId(2)).hasLabel('knows').has('weight',gt(0.0))
==>e[7][1-knows->2]
gremlin> g.V(1,2).bothE().where(inV().has(id, within(2,3))).hasLabel('created')
==>e[9][1-created->3]
gremlin> vStarts = g.V(1,2).toList().toArray()
==>v[1]
==>v[2]
gremlin> vEnds = g.V(2,3).toList().toArray()
==>v[2]
==>v[3]
gremlin> g.V(vStarts).bothE().where(inV().is(within(vEnds))).hasLabel('created')
==>e[9][1-created->3]