【发布时间】:2015-02-04 14:28:57
【问题描述】:
我有三个独立的类别树,它们将使用密码以任何顺序导入。
- (c2)-[父]->(c1)
- (c4)-[父]->(c3)->[父]->(c1)
- (c5)-[父]->(c3)
并且需要使用查询创建图中提到的结构。我写的查询是
MERGE (:Category {name:'c2'})-[:PARENT]->(:Category {name:'c1'})
MERGE (:Category {name:'c4'})-[:PARENT]->(:Category {name:'c3'})-[:PARENT]->(:Category {name:'c1'})
MERGE (:Category {name:'c5'})-[:PARENT]->(:Category {name:'c3'})
但是上面的查询为我需要避免的第二个合并查询创建重复的类别 c1。此外,第三个查询应该创建现在正确发生的新类别 c3。
还有一点是这三个密码查询应该是独立可执行的。例如:系统已经有一个类别树(c2)-[PARENT]->(c1),需要添加(c4)-[PARENT]-> (c3)->[PARENT]->(c1) 使用密码进入类别树。
我可以采用文档中提到的一些类似方法 http://neo4j.com/docs/stable/cypherdoc-linked-lists.html 。但只是想检查一下是否有解决此问题的简单方法
【问题讨论】:
-
这种行为是正常的,因为您不使用标识符,因此 Cypher 无法知道它是新的 c1 节点还是新节点。这是关于 MERGE graphaware.com/neo4j/2014/07/31/cypher-merge-explained.html 的一个非常好的解释