提前致谢..
答案 0 :(得分:3)
CREATE
正如它所说的那样。它创建,如果这意味着创建重复,那么它创建。 MERGE
与create执行相同的操作,但还会检查节点是否已存在,并指定了您指定的属性。如果是,那么它不会创建。这有助于避免重复。这是一个例子:我使用CREATE
两次来创建一个具有相同名称的人。
neo4j-sh (?)$ create (p:Person {name: "Bob"});
+-------------------+
| No data returned. |
+-------------------+
Nodes created: 1
Properties set: 1
Labels added: 1
9 ms
neo4j-sh (?)$ create (p:Person {name: "Bob"});
+-------------------+
| No data returned. |
+-------------------+
Nodes created: 1
Properties set: 1
Labels added: 1
5 ms
所以现在当我们查询时,有两个Bob's。
neo4j-sh (?)$ match (p:Person {name:"Bob"}) return p;
+--------------------------+
| p |
+--------------------------+
| Node[222124]{name:"Bob"} |
| Node[222125]{name:"Bob"} |
+--------------------------+
2 rows
46 ms
让我们{另一个鲍勃MERGE
,看看会发生什么。
neo4j-sh (?)$ merge (p:Person {name:"Bob"});
+--------------------------------------------+
| No data returned, and nothing was changed. |
+--------------------------------------------+
2 ms
neo4j-sh (?)$ match (p:Person {name:"Bob"}) return p;
+--------------------------+
| p |
+--------------------------+
| Node[222124]{name:"Bob"} |
| Node[222125]{name:"Bob"} |
+--------------------------+
2 rows
11 ms
鲍勃已经存在,所以MERGE
在这里什么也没做。再次查询,同样存在两个Bobs。如果数据库中没有Bobs,MERGE
将完成与CREATE
相同的操作。