在gremlin中仅将值提取为csv格式

问题描述

我正在尝试从Graph数据库提取值。我正在尝试使用下面的gremlin控制台命令,但它正在返回键值对,我们可以将其转换为列表。

%%gremlin

g.V().hasLabel('airport').limit(2).project('id','label','region','country').by(id()).by(label()).by('region').by('country').fold()

输出

[{'id': '1','label': 'airport','region': 'US-GA','country': 'US'},{'id': '2','region': 'US-AK','country': 'US'}]

预期输出

'1','airport','US-GA','US'
'2','US-AK','US'

or

[['1','US'],['2','US']]

解决方法

可以使用project而不是使用values。像projectvalueMap这样的步骤会返回一个key:value映射,而values的结果中不包含这些键。

gremlin> g.V().
           hasLabel('airport').
           limit(2).
           local(union(id(),label(),values('region','country')).fold())

==>[1,airport,US,US-GA]
==>[2,US-AK]

作为替代方案,您只需在当前查询中添加一个select(values),我认为我更喜欢这样做,因为它避免了需要执行localunion步骤。

gremlin> g.V().
           hasLabel('airport').
           limit(2).
           project('id','label','region','country').
             by(id()).
             by(label()).
             by('region').by('country').
           select(values).
           fold()

==>[[1,US-GA,US],[2,US-AK,US]]