我有三个独立的类别树,可以使用cypher以任何顺序导入。
需要使用查询创建图中提到的结构。我写的查询是
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)使用cypher进入类别树。
我可以在文档中提到一些类似的方法 http://neo4j.com/docs/stable/cypherdoc-linked-lists.html。但只是想检查是否有一种简单的方法来解决这个问题
答案 0 :(得分:1)
试试这个(在第三个查询中没有拼写错误)
MERGE (:Category {name:'c2'})-[:PARENT]->(c1:Category {name:'c1'})
MERGE (:Category {name:'c4'})-[:PARENT]->(:Category {name:'c3'})-[:PARENT]->(c1)
MERGE (:Category {name:'c5'})-[:PARENT]->(:Category {name:'c3'})
答案 1 :(得分:0)
您可以使用单个查询来避免重复输入
MERGE (:Category {name:'c4'})-[:PARENT]->(:Category {name:'c3'})-[:PARENT]->(:Category {name:'c1'})<-[:PARENT]-(:Category {name:'c2'})
MERGE (:Category {name:'c5'})-[:PARENT]->(:Category {name:'c5'})
答案 2 :(得分:0)
我通过为顶级类别添加一个名为Root的标签来解决问题。
Cypher查询第一棵树 - (c2) - [PARENT] - &gt;(c1)
MERGE (nc1:Category:Root{name:'c1'})
MERGE (nc3:Category {name:'c2'})-[:PARENT]->(nc1)
Cypher查询第二棵树 - (c4) - [PARENT] - &gt;(c3) - &gt; [PARENT] - &gt;(c1)
MERGE (nc1:Category:Root{name:'c1'})
MERGE (nc3:Category {name:'c3'})-[:PARENT]->(nc1)
MERGE (:Category {name:'c4'})-[:PARENT]->(nc3)
Cypher查询第三棵树 - (c5) - [PARENT] - &gt;(c3)
MERGE (nc3:Category:Root{name:'c3'})
MERGE (nc5:Category {name:'c5'})-[:PARENT]->(nc3)