1.8 CREATE UNIQUE
CREATE UNIQUE语句相当于MATCH 和 CREATE的混合体—尽可能地匹配,然后创建未匹配到的。
可能会想到用MERGE来代替CREATE UNIQUE,然而MERGE并不能很强地保证关系的唯一性。
CREATE (root { name: 'root' }),(A { name: 'A' }),(B { name: 'B' }),(C{ name: 'C' })
CREATE (root)-[:X]->(A),(root)-[:X]->(B),(root)-[:X]->(C),(A)-[:KNOWS]->(C)
return root,A,B,C
1.8.1 创建唯一节点
(1)创建未匹配到的节点
MATCH (root { name: 'root' }) CREATE UNIQUE (root)-[:LOVES]-(someone) RETURN someone |
root节点没有任何LOVES关系。因此,创建了一个节点及其与root节点的LOVES关系。注意这里可以不指定关系方向
(2)用含值的模式创建节点
MATCH (root { name: 'A' }) CREATE UNIQUE (root)-[:X]-(leaf { name: 'D' }) RETURN leaf |
没有与root节点相连的name为D的节点,所以创建一个新的节点来匹配该模式。
(3)创建未匹配到带标签的节点