gpt4 book ai didi

neo4j - 将所有关系移动/复制到不同的节点

转载 作者:行者123 更新时间:2023-12-04 16:08:58 26 4
gpt4 key购买 nike

有没有办法将关系从一个节点复制或移动到另一个节点?

我有一个类似于这里的情况:

neo4j merge 2 or multiple duplicate nodes

和这里:

Copy relationships of different type using Cypher

假设我在图中有这种模式

(a)-[r:FOO]->(b)
(a)<-[r2:BAR]-(c)

然后我有另一个节点, (d) ,它可能是也可能不是 (a) 的副本.我的想法是,从功能的角度来看,节点是否重复并不重要。我希望能够移动或复制关系 r:FOOr2:BAR这样图形现在包括
(d)-[r:FOO]->(b)
(d)<-[r2:BAR]-(c)

如果我在有重复项时这样做来合并节点,我希望能够移动关系而不是复制然后(也许可选)删除 (a) .请注意,有不止一种关系类型,我不确定这些类型是什么。我意识到我可以分阶段执行此操作,但认为如果有一种有效的方法可以在一个密码查询中执行此操作,那就太好了。我目前的策略类似于(不是确切的语法,只是提供一个想法)
// get all outgoing relationships
MATCH (a:Label1 { title : 'blah' })-[r]->(o)
RETURN r
// returns FOO and BAR

// for each relationship type, create one from (d) and copy the properties over
MATCH (a:Label1 { title : 'blah' })-[r:FOO]->(o), (d:Label1 { title : 'blah blah' })
CREATE (d)-[r2:FOO]->(o)
SET r2 = r
...etc...

// now do the same for incoming relationships
MATCH (a:Label1 { title : 'blah' })<-[r]-(o)
RETURN r
// returns FOO and BAR
// for each relationship type, create one from (d) and copy the properties over
MATCH (a:Label1 { title : 'blah' })<-[r:FOO]-(o), (d:Label1 { title : 'blah blah' })
CREATE (d)<-[r2:FOO]-(o)
SET r2 = r
...etc...

// finally delete node and relationships (if required)
MATCH (a:Label1 { title : 'blah' })-[r]-(o)
DELETE r, a

然而,这依赖于许多查询和事务。能够在一个查询中实现这一点会更可取(在我的简单观点中)。但是,我不相信密码中存在这样的东西。我错了吗?

有任何想法吗?如果这还不清楚,请告诉我,我将尝试进一步详细说明和解释。

有关信息,我使用的是 Neo4j 2.1.6 社区版(使用来自 .NET 应用程序的 neo4jclient)。

刚刚意识到我还必须重复我的过程来解释关系的方向,除非我弄错了?即从 (a) 获取所有传出关系,将它们重新创建为来自 (d) 的传出,然后对所有传入的关系执行相同的操作。上面的 Cypher 已相应地进行了编辑。

更新:我猜这是一个白日梦,根本不可能。任何人都可以证实这一点吗?即使是“不!”,也有明确的答案。如果是这样,我会考虑询问 Neo4j 人员此功能是否可行且值得考虑。

更新 2:由于缺乏想法,我猜这是不可能的。我当然没有进一步的研究或实验。看起来功能请求是要走的路。我不可能是唯一一个会发现此功能非常有用的人。

最佳答案

我认为您可以将这些链接在一起:

// get all relationships
MATCH
(a:Label1 { title : 'blah' })-[r]-(o),
(d:Label1 { title : 'blah blah' })
CREATE (d)-[r2:type(r)]-(o)
DELETE r, a

我唯一不完全确定的是是否能够使用 type()在那里使用它的功能。我现在就试试

关于neo4j - 将所有关系移动/复制到不同的节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27984668/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com