【问题标题】:MERGE with UNWIND Issue Neo4j与 UNWIND 合并问题 Neo4j
【发布时间】:2021-09-15 22:58:06
【问题描述】:

我有一个我在 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 是更好的做法吗?

【问题讨论】:

    标签: python neo4j cypher


    【解决方案1】:

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多