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

时间:2015-01-31 18:04:22

标签: neo4j cypher neo4j.rb

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

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

1 个答案:

答案 0 :(得分: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