如果已在现有节点之间创建,我想限制创建的关系。现在它被多次创建?有没有类似于' merge'的命令?限制重复关系?感谢任何建议
答案 0 :(得分:1)
创建关系时,用户MERGE而不是CREATE。
MERGE (Product)-[:listed_under_category]->(level3)
MERGE (level3)-[:child_of]->(level2)
答案 1 :(得分:1)
如果我理解您的问题,CREATE UNIQUE可能是您正在寻找的解决方案。例如:
create (a:Ex {name: 'A'})-[r:inside]->(b:Ex {name: 'B'}) return a, b, r
设置您的原始(a) - [] - >(b)关系。然后以你提议的方式扩展关系......
match (a)-[:inside]->(b) where a.name = 'A' and b.name = 'B'
create unique (a)-[:inside]->(b)-[:inside]->(q:Ex {name: 'Q'})
return a, b, q
如果关系不同,CREATE UNIQUE也有效:
match (a)-[:inside]->(b) where a.name = 'A' and b.name = 'B'
create unique (a)-[:inside]->(b)-[:under]->(q:Ex {name: 'Q'})
return a, b, q
答案 2 :(得分:0)
MERGE
子句也避免了重复关系。
答案 3 :(得分:0)
所以当你输入类似merge(a)的东西 - [] - >(b) - [] - >(q) 如果你已经有(a) - [] - >(b)
他将重新创建(a) - [] - >(b) - [] - >(q)并且你在db(a) - [] - >(b) - [] - &gt ;(q),(a) - [] - >(b)
但是如果你输入merge(a) - [] - >(b)merge(b) - [] - >(q)
你知道你有节点。如果没有关系,Neo4j合并将创建关系。如果有关系则匹配