在Tinkerpop3中,valueMap返回一个数组,如何获得一个真正的键值对(没有数组)?
gremlin> Gremlin.version()
==>3.0.1-incubating
:> def trav = g.V().hasLabel('Group'); trav.valueMap()
==>{joinTime=[2016-12-05T22:27:01.088Z], groupId=[9de5-45cf-b40d-e357b40e87b1], mCanInvite=[true]}
:> def trav = g.V().hasLabel('Group'); trav.local(properties().group().by(key()).by(value()))
==>{joinTime={2016-12-05T22:27:01.088Z=1}, groupId={9de5-45cf-b40d-e357b40e87b1=1}, mCanInvite={true=1}
答案 0 :(得分:1)
这是预期的行为。 参见http://tinkerpop.apache.org/docs/current/reference/#valuemap-step
如果您不希望将值包装在数组中,请将.by(unfold())
附加到valueMap()
以您的情况
def trav = g.V().hasLabel('Group');
trav.valueMap().by(unfold());
答案 1 :(得分:0)
您可以尝试使用select,它会返回键值对。 例如:
g.V().hasLabel('Group').as('name','count')
.select('name','count')
.by('groupName')
.by(outE('contains').count())
结果将类似于:
[{'name':'group1', 'count':10},...]
name表示groupName属性值,count - 有多少个边有组。