以简单格式获取顶点属性信息

Get vertex properties information in simple format

假设我在图表中有两个节点 'A' 和 'B',每个节点都具有 'name'(字符串)和 'roll-no'(整数)属性。如何编写查询以获取以下格式的节点属性信息。请注意,我不需要数据类型信息和输出中的嵌套 json 结构。

[{name=[apple], roll-no=[10,20]}, {name=[mango], roll-no=[30]}]

我想我问的是如何将 GraphSON 转换为正常 JSON。

您可以project()将元素变成Map:

gremlin> g.V(1).project('name','age').by('name').by('age')
==>[name:marko,age:29]

如您所见,采用这种方法可以让您在控制 by() 步进调制器中的属性时,以更细粒度的方式控制贴图的生成方式。如果返回的顶点没有同类 属性 键,您将需要以某种方式考虑到这一点 - 这是一种可能性:

gremlin> g.V().project('name','age').
......1>   by('name').
......2>   by(coalesce(values('age'),constant('none')))
==>[name:marko,age:29]
==>[name:vadas,age:27]
==>[name:lop,age:none]
==>[name:josh,age:32]
==>[name:ripple,age:none]
==>[name:peter,age:35]

如果不使用项目,您也可以这样做:

gremlin> g.V().local(properties().group().by(key()).by(value()))
==>[name:marko,age:29]
==>[name:vadas,age:27]
==>[name:lop,lang:java]
==>[name:josh,age:32]
==>[name:ripple,lang:java]
==>[name:peter,age:35]

不如 project() 清楚,并且会获得通常不鼓励的所有属性,但显然这种方法会奏效。我猜你可以逐条列出要获取的属性,如下所示:

gremlin> g.V().local(properties('name','age').group().by(key()).by(value()))
==>[name:marko,age:29]
==>[name:vadas,age:27]
==>[name:lop]
==>[name:josh,age:32]
==>[name:ripple]
==>[name:peter,age:35]