Tinkerpop Gremlin 获取指向列表中顶点的边
Tinkerpop Gremlin Get Edges that go to vertices within a list
我正在尝试查询到达聚合列表中的顶点的边。这听起来很简单,而且应该是这样,但我似乎写错了我的查询,我只是想不通为什么。无论如何,我将使用 Modern Toy Graph 来做一个例子,这在这种情况下不一定有多大意义,但仍然说明了我想做的事情:
graph = TinkerFactory.createModern()
g = graph.traversal()
g.V().
hasLabel('person').
aggregate('x').
outE().
where(inV().is(within('x')))
我正在做的是遍历所有 'person' 个顶点,聚合它们,然后尝试获取所有通向该聚合列表中另一个顶点的传出边。我希望上面的查询 return the edge labelled "knows" that goes between vertex 1 and 2, and the one between 1 and 4,但是没有 returned。如果我只是想获取这些边的另一端的顶点,而不是边本身,则以下工作正常,returning 顶点 2 和 4:
g.V().
hasLabel('person').
aggregate('x').
out().
where(within('x'))
那么我怎样才能得到指向已经聚合在列表中的顶点的边呢?
(再一次,我知道这个例子在这个特定的图表中没有多大意义,我可以很容易地查询 outE('knows'),但这个查询与另一个图表相关。 )
谢谢。
你不能那样使用 is()
。一个简单的解决方法是将您的“工作”遍历与不工作的遍历结合起来:
gremlin> g.V().hasLabel('person').
......1> aggregate('x').
......2> outE().
......3> where(inV().where(within('x')))
==>e[7][1-knows->2]
==>e[8][1-knows->4]
我正在尝试查询到达聚合列表中的顶点的边。这听起来很简单,而且应该是这样,但我似乎写错了我的查询,我只是想不通为什么。无论如何,我将使用 Modern Toy Graph 来做一个例子,这在这种情况下不一定有多大意义,但仍然说明了我想做的事情:
graph = TinkerFactory.createModern()
g = graph.traversal()
g.V().
hasLabel('person').
aggregate('x').
outE().
where(inV().is(within('x')))
我正在做的是遍历所有 'person' 个顶点,聚合它们,然后尝试获取所有通向该聚合列表中另一个顶点的传出边。我希望上面的查询 return the edge labelled "knows" that goes between vertex 1 and 2, and the one between 1 and 4,但是没有 returned。如果我只是想获取这些边的另一端的顶点,而不是边本身,则以下工作正常,returning 顶点 2 和 4:
g.V().
hasLabel('person').
aggregate('x').
out().
where(within('x'))
那么我怎样才能得到指向已经聚合在列表中的顶点的边呢?
(再一次,我知道这个例子在这个特定的图表中没有多大意义,我可以很容易地查询 outE('knows'),但这个查询与另一个图表相关。 )
谢谢。
你不能那样使用 is()
。一个简单的解决方法是将您的“工作”遍历与不工作的遍历结合起来:
gremlin> g.V().hasLabel('person').
......1> aggregate('x').
......2> outE().
......3> where(inV().where(within('x')))
==>e[7][1-knows->2]
==>e[8][1-knows->4]