Gremlin:使用给定的标签和属性值计算出站边缘
我有一个图,其中顶点有几个出站边类型,每个边类型都有属性。我希望从每个顶点获取出站边的计数,但将计数限制为具有特定标签和属性值的边 到目前为止,我已经:Gremlin:使用给定的标签和属性值计算出站边缘,gremlin,tinkerpop3,Gremlin,Tinkerpop3,我有一个图,其中顶点有几个出站边类型,每个边类型都有属性。我希望从每个顶点获取出站边的计数,但将计数限制为具有特定标签和属性值的边 到目前为止,我已经: g.V().hasLabel("vertexLabel").as("source") .outE("edgeLabel").has("edgeProp", "propValue").as("edge") .select("source", "edge") 这为我提供了每个源顶点和每个具有正确标签和属性的输出边的列表。我想做的是
g.V().hasLabel("vertexLabel").as("source")
.outE("edgeLabel").has("edgeProp", "propValue").as("edge")
.select("source", "edge")
这为我提供了每个源顶点和每个具有正确标签和属性的输出边的列表。我想做的是,将每个源顶点和出站边数量的计数减少为一个条目。然而,我似乎无法让groupCount
与outE
一起工作。我得到的最接近的结果是:
g.V().hasLabel("vertexLabel").as("source").out("edgeLabel").groupCount()
这使我可以按源顶点计数,但包括带有该标签的所有边,而不管它们具有什么特性值
我知道这可能需要一个group()
提前感谢。使用TinkerPop的“现代”玩具图,我认为您可以通过使用project()来表达这一点:
您也可以使用groupCount()
来实现这一点,但我觉得有点尴尬:
gremlin> g.V().hasLabel('person').
......1> outE('created').
......2> has('weight',gt(0.5)).
......3> groupCount().
......4> by(inV())
==>[v[5]:1]
注意:在这种情况下,您将丢失“0”值,因为边在groupCount()
之前被过滤掉。你也可以选择group()
,但我认为它读起来不如project()
:
gremlin> g.V().hasLabel('person').
......1> outE('created').
......2> has('weight',gt(0.5)).
......3> groupCount().
......4> by(inV())
==>[v[5]:1]
gremlin> g.V().hasLabel('person').
......1> group().
......2> by().
......3> by(outE('created').
......4> has('weight',gt(0.5)).count())
==>[v[1]:0,v[2]:0,v[4]:1,v[6]:0]