我有一个图表,其中顶点有几个出站边类型,每个边类型都有属性 . 我想得到每个顶点的出站边数,但是将计数限制为具有特定标签和属性值的边 .
到目前为止我有:
g.V().hasLabel("vertexLabel").as("source")
.outE("edgeLabel").has("edgeProp", "propValue").as("edge")
.select("source", "edge")
这给了我一个每个源vertext和每个传出边缘的列表,其中包含正确的标签和属性 . 我想要做的是将每个源顶点的一个条目减少到一个条目,并将出站边数的数量减少 . 但是我似乎无法让 groupCount
与 outE
结合使用 . 我最接近的是:
g.V().hasLabel("vertexLabel").as("source").out("edgeLabel").groupCount()
这使我按源顶点计数,但包括具有该标签的所有边,而不管它们具有哪些属性值 .
我知道这可能需要 group().by()
步骤,但我不知道如何形成它 .
提前致谢 .
1 回答
使用来自TinkerPop的"modern"玩具图表,我认为你可以通过使用
project()
来最好地表达这一点:您也可以使用
groupCount()
执行此操作,但对我来说感觉有点尴尬:请注意,在这种情况下会丢失"0"值,因为边缘会在
groupCount()
之前被过滤掉 . 您也可以使用group()
,但我认为它的读取效果不如project()
: