Neo4j 如何更新Gremlin上的几个顶点属性?

Neo4j 如何更新Gremlin上的几个顶点属性?,neo4j,graph-databases,Neo4j,Graph Databases,我想在一个顶点上添加几个属性。我可以做到: g.v(1).firstname='Marko' g.v(1).lastname='Rodriguez' 但是如何在一个查询中使用以下散列{firstname:'Marko',lastname:'Rodriguez'}添加这些属性?您可以构造一个可以工作的副作用管道。在简单的情况下,请执行以下操作: g.v(1)._().sideEffect{it.firstname='Marko'; it.lastname='Rodriguez'} 或者,如果您

我想在一个顶点上添加几个属性。我可以做到:

g.v(1).firstname='Marko'
g.v(1).lastname='Rodriguez'

但是如何在一个查询中使用以下散列{firstname:'Marko',lastname:'Rodriguez'}添加这些属性?

您可以构造一个可以工作的副作用管道。在简单的情况下,请执行以下操作:

g.v(1)._().sideEffect{it.firstname='Marko'; it.lastname='Rodriguez'}
或者,如果您只需要在一个节点上工作并拥有映射,则可以使用映射的
每个
方法:

m = [firstname:'Marko', lastname:'Rodriguez']
m.each{g.v(1).setProperty(it.key, it.value)}
或者,您可以在管道中执行此操作,在管道中,您可以使用希望设置的值进行散列。再一次,我们将使用副作用管道。由于闭包中有一个闭包,我们需要将
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是字符串,而不是整数,因此请确保正确引用它们。

谢谢您,Pridkett,我将尽快对此进行测试。但我认为会有一个更简单的解决办法。