Gremlin查询如何获取顶点属性值而非顶点id?
调整思路
你当前查询中groupCount().by('a')是将a标签对应的顶点整体作为分组键,输出序列化后就会展示为顶点ID。要替换为顶点的属性值作为分组键,只需修改groupCount的by参数,读取a顶点的对应属性即可。
修改后的查询示例
假设你要提取的属性名为color(存储Red这类属性值的字段,请替换为你实际使用的属性名),完整查询如下:
g.V().hasLabel('Attribute').as('a'). in('has').as('b'). in('purchased').as('c'). select('a', 'b', 'c'). groupCount(). by(select('a').values('color')). // 仅修改此处,替换原有by('a')写法 order(Scope.local). by(Column.values, Order.DESC). toList()
调整后返回结果的键就会变为属性值,示例输出如下:
[{Red: 6, xxx: 4, ...}]
可选优化
如果存在部分Attribute顶点无对应属性的场景,可添加默认值避免查询中断,修改by部分代码即可:
by(select('a').values('color').fold().coalesce(unfold(), constant('无属性值')))
如果需要同时保留顶点ID和属性值做关联,也可以返回组合结构作为键:
by(select('a').project('属性值','顶点id').by('color').by(id))
内容的提问来源于stack exchange,提问作者ANKIT GUPTA
相关产品推荐
相关产品推荐

