我想在一个顶点上添加几个属性。我可以做:
g.v(1).firstname='Marko'
g.v(1).lastname='Rodriguez'
但是如何在单个查询中使用以下哈希 {firstname:'Marko', lastname:'Rodriguez'} 添加这些属性?
我想在一个顶点上添加几个属性。我可以做:
g.v(1).firstname='Marko'
g.v(1).lastname='Rodriguez'
但是如何在单个查询中使用以下哈希 {firstname:'Marko', lastname:'Rodriguez'} 添加这些属性?
您可以构建一个可行的 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
,是“this node”的缩写,因此它可以在第二个闭包中访问:
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
此方法的一个潜在问题是您需要记住顶点 ID 是字符串,而不是整数,因此请确保正确引用它们。