如何在一个事务中不同节点之间添加多个关系

本文关键字:节点 之间 关系 添加 事务 一个 | 更新日期: 2023-09-27 18:36:37

我已经一次性使用Neo4jClient在Neo中创建了许多节点,我的意思是单个事务。现在想要在它们之间创建不同的关系。我知道左节点,右节点以及它们之间的关系。但这是一个列表,而不是单一的关系。

我没有找到任何方法可以在单个事务中的多个现有节点之间创建多个关系。

我对此感到

非常震惊。如果有任何解决方案,请帮助我。

如何在一个事务中不同节点之间添加多个关系

假设我们有 3 个节点定义为: CREATE (a:A), (b:B), (c:C)

然后,根据您尝试一次创建多少关系以及它们的组织方式,我可以建议两种可能的选择:

  1. 如果可以将关系列出到单个不间断的合并表达式中(合并语法当前不允许使用多个模式),则可以轻松创建多个关系,如下所示:

    MATCH (a:A), (b:B), (c:C) MERGE (a)-[:REL1]->(b)-[:REL2]->(c)-[:REL3]->(a)

  2. 否则,如果结构太复杂而无法以这种方式写出,您可以使用:

    MATCH (a:A), (b:B), (c:C) MERGE (a)-[:REL1]->(b) MERGE (b)-[:REL2]->(c) MERGE (c)-[:REL3]->(a)

最后,我想值得指出的是显而易见的一点,如果你使用的是服务器的事务端点,那么即使将它们分解成单独的语句,仍然可以原子操作,尽管当然你可能会招致多个MATCH子句的惩罚,所以性能可能会更差。