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
我有一份我在 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