首页 文章

Neo4j Cypher:在用另一个节点替换节点之前传输所有关系

提问于
浏览
3

在删除第一个节点之前,我试图将所有进出的关系从一个节点转移到另一个节点 . 他们都有相同的标签 . 我看到了这个Neo4j Cypher: copy relationships and delete node,但在我的情况下,我不知道关系的类型,我想转移进入和离开的 .

我正在寻找一个密码查询或基于neo4j.rb的查询

1 回答

  • 4

    我不认为纯粹的密码可以实现这一点 . 这是一个使用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
    

相关问题