3
我试图在删除第一个节点之前将所有从一个节点到另一个节点的传入和传出关系转移到另一个节点。他们都有相同的标签。 我看到这个Neo4j Cypher: copy relationships and delete node 但在我的情况下,我不知道关系的类型,我想转移ingoing和外向的。Neo4j Cypher:在用另一个节点替换节点之前传输所有关系
我在找无论是暗号查询或基于neo4j.rb
我试图在删除第一个节点之前将所有从一个节点到另一个节点的传入和传出关系转移到另一个节点。他们都有相同的标签。 我看到这个Neo4j Cypher: copy relationships and delete node 但在我的情况下,我不知道关系的类型,我想转移ingoing和外向的。Neo4j Cypher:在用另一个节点替换节点之前传输所有关系
我在找无论是暗号查询或基于neo4j.rb
我不认为这是可能的纯CYPHER查询。下面是使用,我认为将工作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
我得到的类型,但随后在每次循环我不知道如何指定new_rel其他节点。 再次感谢Brian;) – armedwing 2015-02-01 13:03:15
只是编辑,因为第二个查询是在错误的方向,他们都需要一个'执行' – 2015-02-01 13:57:12
另一个节点正在由'other'变量指定。这应该在'WITH'子句中传递,然后在'CREATE'子句中再次匹配。我可能会误解...... – 2015-02-01 13:57:57