Получить идентификатор + карту вершины на Гремлин? - PullRequest
5 голосов
/ 09 сентября 2011

gv (1) .id

дает мне идентификатор вершины 1,

gv (1) .map

дает мне свойства вершины 1.

Но как я могу получить хэш с идентификатором и свойствами одновременно

Ответы [ 4 ]

7 голосов
/ 18 марта 2017

Я знаю, что это старый вопрос, поэтому ответы ниже будут работать на более старых версиях TinkerPop (3 <); просто если кто-то (как я) наткнется на этот вопрос и найдет решение, которое работает на TinkerPop 3 - тот же результат может быть достигнут путем вызова valueMap с аргументом 'true', например: </p>

gremlin> g.v(1).valueMap(true)

ссылка может быть найдена в документации здесь

4 голосов
/ 17 августа 2013

Начиная с Gremlin 2.4.0, вы также можете делать что-то вроде:

gremlin> g = TinkerGraphFactory.createTinkerGraph()
==>tinkergraph[vertices:6 edges:6]
gremlin> g.v(1).out.map('name','age','id') 
==>{id=2, age=27, name=vadas}
==>{id=4, age=32, name=josh}
==>{id=3, age=null, name=lop}

Другая альтернатива с использованием transform ():

gremlin> g.v(1).out.transform{[it.id,it.map()]}
==>[2, {age=27, name=vadas}]
==>[4, {age=32, name=josh}]
==>[3, {name=lop, lang=java}]
0 голосов
/ 13 апреля 2015

Просто продолжая @ ответ Стивена; чтобы получить выходные данные id и map() в красивой отдельной карте для каждого Vertex, просто используйте операции plus или leftShift Map в методе transform.

Отказ от ответственности: Я использую groovy, я не смог протестировать его в gremlin (я думаю, что он точно такой же).

Groovy Code

println "==>" + g.v(1).out.transform{[id: it.id] + it.map()}.asList()

или

println "==>" + g.v(1).out.transform{[id: it.id] << it.map()}.asList()

Придает

==>[[id:2, age:27, name:vadas], [id:4, age:32, name:josh], [id:3, name:lop, lang:java]]
0 голосов
/ 15 сентября 2011

Я нашел решение

tab = new Table()
g.v(1).as('properties').as('id').table(tab){it.id}{it.map}
tab
...