Neo4J传入和传出关系的唯一节点?

时间:2016-11-15 05:28:34

标签: neo4j

我输入了一个查询:

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”。一个用于传出,另一个用于传入。它也与其他节点一样。我希望有一个包含所有传入和传出关系的节点。谁能帮帮我吗?

Datasets looks like this

In this image there are nodes with same values

1 个答案:

答案 0 :(得分:1)

我认为问题是您在查询中使用了两个不同的节点标签:Source和:Target。 MERGE中保证的唯一性是具有给定属性的给定标签的节点,因此如果您有一个具有给定id的Source节点,并且您尝试合并具有相同ID的:Target节点,则它将创建一个单独的节点,因为标签不同。

因为看起来这个导入中的节点应该使用相同的标签,所以选择反映特定节点在整个数据库中的角色的东西,而不是在导入操作的上下文中。

另外,为了加快导入速度,我会在你最终使用的任何节点标签的id属性上添加唯一性约束。