Вы можете создать трубу SideEffect, которая будет работать. В простом случае сделайте это:
g.v(1)._().sideEffect{it.firstname='Marko'; it.lastname='Rodriguez'}
В качестве альтернативы, если вам нужно работать только с одним узлом и иметь карту, вы можете использовать метод each
карты:
m = [firstname:'Marko', lastname:'Rodriguez']
m.each{g.v(1).setProperty(it.key, it.value)}
Или вы можете сделать это внутри канала, где у вас есть хеш со значениями, которые вы хотите установить. Еще раз, мы будем использовать трубу sideEffect. Поскольку внутри замыкания есть замыкание, нам нужно присвоить псевдониму значение it
от первого замыкания к чему-то другому, в данном случае tn
, сокращенно от «этого узла», поэтому оно доступно во втором замыкании. :
g = new TinkerGraph()
g.addVertex()
g.addVertex()
m = ['0': [firstname: 'Marko', lastname: 'Rodriguez'], '1': [firstname: 'William', lastname: 'Clinton']]
g.V.sideEffect{tn = it; m[tn.id].each{tn.setProperty(it.key, it.value)}}
Это даст следующее:
gremlin> g.v(0).map
==>lastname=Rodriguez
==>firstname=Marko
gremlin> g.v(1).map
==>lastname=Clinton
==>firstname=William
Один из возможных недостатков этого метода заключается в том, что вам нужно помнить, что идентификаторы вершин - это строки, а не целые числа, поэтому убедитесь, что их заключили в кавычки.