我输入了一个查询:
LOAD CSV FROM "file:///E:/HVR_1.csv" AS row
MERGE (u:Source {id: toInt(row[0])})
MERGE (t:Target {id: toInt(row[1])})
MERGE (u)-[:LinkTo]->(t)
我想创建一个包含传入和传出链接的唯一节点。我不知道我哪里出错了。可以找到,有两个节点值为“4”。一个用于传出,另一个用于传入。它也与其他节点一样。我希望有一个包含所有传入和传出关系的节点。谁能帮帮我吗?
答案 0 :(得分:1)
我认为问题是您在查询中使用了两个不同的节点标签:Source和:Target。 MERGE中保证的唯一性是具有给定属性的给定标签的节点,因此如果您有一个具有给定id的Source节点,并且您尝试合并具有相同ID的:Target节点,则它将创建一个单独的节点,因为标签不同。
因为看起来这个导入中的节点应该使用相同的标签,所以选择反映特定节点在整个数据库中的角色的东西,而不是在导入操作的上下文中。
另外,为了加快导入速度,我会在你最终使用的任何节点标签的id属性上添加唯一性约束。