你可以把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]