我有一个具有post
个顶点的图,这些顶点的边具有1个或多个tag
顶点。
我正在尝试计算每个标签的总重量:
// Create empty graph
graph = TinkerGraph.open()
g = graph.traversal()
// Create some tag vertices
g.inject('food', 'drink').addV('tag').property(id, identity())
// Create some posts with 'food' tag
posts = g.inject(10, 20).addV('post').property('weight', identity()).toList()
g.V(posts).addE('tagged').to(g.V('food'))
// Create some posts with 'drink' tag
posts = g.inject(5).addV('post').property('weight', identity()).toList()
g.V(posts).addE('tagged').to(g.V('drink'))
// Attempt to calculate total weight for each tag
g.V().
hasLabel('post').as('p').
out('tagged').
group('g').
by(id).
by(select('p').values('weight').sum()).
cap('g').next()
但我收到此错误:
java.lang.Long cannot be cast to org.apache.tinkerpop.gremlin.process.traversal.traverser.util.TraverserSet
请注意,计算所有帖子的总权重效果很好:
g.V().hasLabel('post').values('weight').sum()
有什么建议吗?
使用Gremlin Server 3.3.4
答案 0 :(得分:1)
这是3.3.4(及更早版本)中的错误。解决方法:
gremlin> g.V().hasLabel('post').as('p').
......1> out('tagged').
......2> group().
......3> by(id).
......4> by(select('p').by('weight').sum())
==>[food:30,drink:5]