使用案例:获取节点的所有边缘,按标签分组,并按照标签,显示名称和两者的计数对另一个V进行分组。
Graph具有以下节点:post,product,company post有一个名为评论的产品和公司。
对于postid,有没有办法按产品和公司分组评论。
我想在表格中显示以下信息。
postid |审查(统计)|产品(数量) postid |审查(统计)|公司(数)
我尝试使用outE()
标签out()
,groupby
,但我似乎无法构建一个查询,该计数将为我提供多个groupby
的计数。
非常感谢任何帮助 提前谢谢。
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)
答案 0 :(得分:1)
我没有你在输出中要求的确切结构,但是这可能足够接近你的目的,因为它确实返回了我认为你要求的数据:
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]]
另一种选择:
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]