我正在使用以下代码创建图形
LOAD CSV WITH HEADERS
FROM "file:///fileName.csv"
AS network
MERGE (n:sourceNode {id:network.node1})
MERGE (m:destNode {id:network.node2})
WITH n,m,network
CALL apoc.create.relationship(n, network.connection, {}, m) yield rel
RETURN n,
rel,
m
它们的CSV文件包含重复的值,例如
node1,connection,node2
A,0.75,B
c,0.5,A
此代码创建了一个类似的图形
但是我需要像下面这样的图来进行分析
我想到的一个解决方案是,我可以同时创建两个
node1
和node2
与单个MERGE
子句,因为它将创建非重复节点。我试图修改此代码,例如
MERGE (n:sourceNode {id:network.node1}, m:destNode {id:network.node2})
和其他,但出现语法错误。可以请我解决这种情况吗?或对此问题有其他解决方案吗?
答案 0 :(得分:1)
您有两个节点A
,因为在MERGE
中您没有使用相同的标签。
所以最后您有了:
A
的节点sourceNode
A
的节点destNode
如果您只想拥有一个节点A
,请在源节点和目标节点上使用一个通用标签,如下所示:
LOAD CSV WITH HEADERS
FROM "file:///fileName.csv"
AS network
MERGE (n:Node {id:network.node1})
MERGE (m:Node {id:network.node2})
WITH n,m,network
CALL apoc.create.relationship(n, network.connection, {}, m) yield rel
RETURN n,
rel,
m
此外,在此示例中,您应该在标签Node
上为属性id
创建一个唯一约束:CREATE UNIQUE CONSTRAINT ON (n:Node) ASSERT n.id IS UNIQUE;