2014-12-05 73 views
0

我已经看到过有关重复的前一个主题,但这里的用例有点不同。 我正在管理部件组件,如物料清单。每个节点应该是可验证的。我想通过复制节点和每个关系到这个节点来处理这个版本。 这会创建很多节点和关系,但这是我认为管理这个的唯一方法。 cypher运行这个最简单的方法是什么?创建重复节点和关系来处理Neo4j中的版本控制

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

+0

你是指从java或cypher? – 2014-12-06 02:14:24

+0

可能来自密码,但我很满意补充编程解决方案(我使用PHP发送密码查询)。 – 2014-12-11 14:57:00

回答

1

你一定想用某种编程语言来做到这一点。但这里有一个小小的例子,所以你可以开始尝试。我最近做了类似的事情。有一点需要注意的是,由于您使用基本相同的数据创建相同对象的新版本,因此对唯一性约束有一些限制。在你的情况下,你可能有许多唯一键可供选择。我的数据有点模糊。我最终为每个新版本创建了一个新标签,并且我为label版本在name上添加了唯一性约束。然后我在数据库中索引了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 
+0

我会探讨这个!谢谢 – 2014-12-11 14:58:04