MERGE with UNWIND Issue Neo4j

MERGE with UNWIND Issue Neo4j

我有一份我在 python 中创建的词典列表。它看起来像这样:

[{name: 'Bob'}, {name: 'Teresa'}, {name: 'Bob'}, {name: 'Teresa'}]

这是我的密码查询,用于获取此列表并合并到 Neo4j 中,我希望只创建 2 个新节点,Bob 和 Teresa 节点。

WITH $batch AS batch
UNWIND batch as ind
MERGE (n:Friend)
SET n += ind

我看到的是我只看到 1 个写入 Neo4j 的节点,它似乎是列表中的最后一项。在此示例中,Teresa 节点是唯一创建的节点。

我应该如何修复我的查询,以便在它完成后看到创建的 Bob 和 Teresa 节点 运行?使列表唯一 [{name: 'Bob'}, {name: 'Teresa'}] 并使用 CREATE 而不是 MERGE 是否更好?

Merge 需要一个字段,您需要在这种情况下像 name 一样唯一。如果你不提供它那么它只会创建一个节点并添加最后一个节点的值。

如果 name 是唯一的 属性,您可以按如下方式修改代码。

WITH $batch AS batch
UNWIND batch as ind
MERGE (n:Friend{name: ind.name})

如果有更多属性:

WITH $batch AS batch
UNWIND batch as ind
MERGE (n:Friend{name: ind.name})
SET n += ind