Получить id + карту вершины на Гремлине?

g.v(1).id

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

g.v (1) .map

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

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


person michaelSc    schedule 09.09.2011    source источник


Ответы (5)


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

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

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

person grreeenn    schedule 17.03.2017
comment
Это устарело. В версии 3.4 (см. Примечания к обновлению) вы должны использовать gremlin> g.v(1).valueMap().with(WithOptions.tokens) - person Xogaz; 29.05.2019

Начиная с 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}]
person stephen mallette    schedule 17.08.2013

при реализации с использованием Java

g.V(1).valueMap().with(WithOptions.tokens).toList()
person shapan dashore    schedule 13.11.2019

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

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

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

Заявление об ограничении ответственности: я использую groovy, я не смог протестировать его в gremlin (я полагаю, это то же самое).

Groovy Код

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

or

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]]
person Nick Grealy    schedule 13.04.2015