MERGE创建多个节点



我有以下表达式:

MERGE (d:Day { day: "1" }) CREATE (a:Test { url:"unique1" })

数据库中已经有三个节点匹配(d:Day { day: "1" })

如果我执行上面的表达式,然后执行

MATCH (a:Test { url:"unique1" }) return count(a) 

我可以看到已经创建了三个测试节点。为什么会这样?

其次,如果我想创建a:Test和d:Day,如果节点不存在,我如何在一个表达式中做到这一点(想使用其余API,不想进行两次往返)

MERGE的工作原理类似于MATCH或CREATE,所以如果他每天发现3个节点:1,他将创建测试3个节点,次数与他发现每天节点的次数相同。

也许你可以这样做:

MERGE (d:Day { day: "1" })
MERGE (a:Test { url:"unique1" })

jens,

如果您在创建了Day节点后只想在上面的示例中创建Test节点,那么执行如下查询:

MERGE (d:Day {day : '1'})
ON CREATE SET d.new = 1
WITH d
WHERE d.new = 1
MERGE (a:Test {url : 'unique1'})
REMOVE d.new

只有在创建了Day节点,并且Test节点不存在的情况下,才会创建Test节点。如果您总是想在创建Day节点时创建Test节点,您可以用create替换第二个MERGE。

恩典与平安,

吉姆

最新更新