頂点にいくつかのプロパティを追加したいと考えています。私はそれをできた:
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'}
または、1 つのノードだけで作業する必要があり、マップが必要な場合は、マップのeach
メソッドを使用できます。
m = [firstname:'Marko', lastname:'Rodriguez']
m.each{g.v(1).setProperty(it.key, it.value)}
または、設定したい値を持つハッシュがあるパイプ内でこれを行うこともできます。ここでも、sideEffect パイプを使用します。it
クロージャーの内部にクロージャーがあるため、最初のクロージャーの値を別のものにエイリアスする必要があります。この場合tn
、「このノード」の略で、2 番目のクロージャーでアクセスできるようになります。
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 は整数ではなく文字列であることを覚えておく必要があるため、適切に引用符で囲むようにしてください。