最初のリレーションシップを削除する前に、ノードから別のノードにすべてのインゴーイング リレーションシップとアウトゴーイング リレーションシップを転送しようとしています。どちらも同じラベルです。このNeo4j Cypher: copy relationship and delete nodeを見まし たが、私の場合、関係のタイプがわからず、着信と発信の両方を転送したいと考えています。
暗号クエリまたは neo4j.rb に基づくクエリを探しています
最初のリレーションシップを削除する前に、ノードから別のノードにすべてのインゴーイング リレーションシップとアウトゴーイング リレーションシップを転送しようとしています。どちらも同じラベルです。このNeo4j Cypher: copy relationship and delete nodeを見まし たが、私の場合、関係のタイプがわからず、着信と発信の両方を転送したいと考えています。
暗号クエリまたは neo4j.rb に基づくクエリを探しています
これは純粋なサイファーでは不可能だと思います。これは私がうまくいくと思うneo4j.rbを使った解決策です:
# Assuming node1 already loaded
node_query = Neo4j::Session.query.match(node: {neo_id: node1.neo_id})
types = node_query.match('node-[rel]-()').pluck('DISTINCT type(rel)')
types.each do |type|
node_query.match('node-[rel]->(other)').with(:node, :rel, :other).create("node-[new_rel]->other").set('new_rel = rel').exec
node_query.match('node<-[rel]-(other)').with(:node, :rel, :other).create("node<-[new_rel]-other").set('new_rel = rel').exec
end