创建重复的节点和关系以处理Neo4j中的版本控制

时间:2014-12-05 22:50:42

标签: neo4j cypher

我之前看到过有关重复的主题,但这里的用例有点不同。 我正在管理像物料清单这样的零件装配。每个节点都应该是可以接受的。我想通过复制节点和与此节点的每个关系来处理此版本控制。 这将创建大量的节点和关系,但这是我认为管理这个的唯一方法。 使用cypher运行此命令的最简单方法是什么?

我已经看过如何创建节点,现在我需要复制关系。

1 个答案:

答案 0 :(得分:2)

你肯定想用某种编程语言来做这件事。但这里有一个小密码示例,因此您可以开始尝试。我最近做了类似的事情。有一点需要注意的是,由于您使用基本相同的数据创建相同对象的新版本,因此您对唯一性约束有一些限制。在您使用BOM的情况下,您可能有许多唯一键可供选择。我的数据有点模糊。我最终为每个新版本创建了一个新标签,并为每个name版本在label添加了唯一性约束。然后我在数据库中索引nameThat suggestion was courtesy of Michael Hunger

// match 2 specific nodes of a particular version and their relationship
MATCH (a:Node)-[r1:ASSEMBLED_WITH]-(b:Node) 
WHERE a.name = 'Node 1' 
AND a.version = 1 
AND b.name = 'Node 2' 
AND b.version = 1

// create copies of the nodes and change the relationship
CREATE (c:Node) 
SET c = a, c.version = 3 
CREATE (d:Node) 
SET d = b, d.version = 3

//create a copy of the relationship and change the version of it
CREATE (c)-[r2:ASSEMBLED_WITH]->(d) 
SET r2 = r1, r2.version = 3