Valuemap返回数组

时间:2016-12-05 23:56:52

标签: gremlin tinkerpop tinkerpop3

在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}

2 个答案:

答案 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 - 有多少个边有组。