Gremlin 查询以获取节点的边数和其他 V

Sue*_*ieq 4 gremlin

用例:获取节点的所有边,按标签分组,并按标签、显示名称和两者的计数对 otherV 分组。

图有以下节点:post、product、company。帖子有一个名为评论的产品和公司。

对于 postid,有没有办法获取按产品和公司分组的评论计数。

我想在表格中显示以下信息。

postid | 评论(计数)| 产品(计数) postid | 评论(计数)| 公司(数)

我试过outE()out()带有groupby标签,但我似乎无法构建一个查询,该查询会给我多个groupby's的计数。

非常感激任何的帮助。
提前致谢。

graph = TinkerGraph.open()
g = graph.traversal()
v1 = graph.addVertex(id, 1, label, "post")
v2 = graph.addVertex(id, 2, label, "company")
v3 = graph.addVertex(id, 3, label, "company")
v4 = graph.addVertex(id, 4, label, "product")
v5 = graph.addVertex(id, 5, label, "product")
v1.addEdge("reviews", v2)
v1.addEdge("reviews", v3)
v1.addEdge("reviews", v4)
v1.addEdge("reviews", v5)
Run Code Online (Sandbox Code Playgroud)

图片

ste*_*tte 5

我没有您在输出中要求的确切结构,但也许这对您的目的来说已经足够接近了,因为它确实返回了我认为您要求的数据:

gremlin> g.V().hasLabel('post').
......1>   project('postid','reviews','types').
......2>     by(id).
......3>     by(outE().count()).
......4>     by(out().groupCount().by(label))
==>[postid:1,reviews:4,types:[product:2,company:2]]
Run Code Online (Sandbox Code Playgroud)

另外一个选项:

gremlin> g.V().hasLabel('post').
......1>   outE().as('e').
......2>   inV().as('i').
......3>   select('e','i').by(label).
......4>   groupCount().by(select('e','i'))
==>[[e:rates,i:company]:2,[e:reviews,i:company]:2,[e:reviews,i:product]:2,[e:rates,i:product]:2]
Run Code Online (Sandbox Code Playgroud)