python - 与 UNWIND 合并问题 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
代替是更好的做法吗?
解决方案
合并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
推荐阅读
- android-sdk-tools - 安装 Android SDK 工具“commandlinetools-win-6200805_latest”时出错
- r - 向 data.table 添加一个“标志”列,表示某些列在 R 中包含 NA
- authentication - IdentityServer4 针对外部 api 进行身份验证
- hashicorp-vault - Hashicorp vault - 从一个 vault 导出密钥,导入另一个 vault
- antlr - 如何编写规则以在 ANTLR 中定义方法
- java - 仅返回具有最大找到长度的元素 java 流
- ios - 带有表情符号的文本未解码 - iOS Swift
- path - 我无法使用 Glassfish 部署战争文件
- animation - 如何在glTF动画中找到给定时间内最接近的两个样本
- python - 如何为可变大小的图像配置 tf.data.Dataset?