Graph Neo4j如何通过单个合并从CSV文件的两列创建节点?

Graph Neo4j如何通过单个合并从CSV文件的两列创建节点?,graph,neo4j,cypher,graph-databases,Graph,Neo4j,Cypher,Graph Databases,我正在使用以下代码创建一个图形 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 RETUR

我正在使用以下代码创建一个图形

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})  

和其他人,但我得到语法错误。有人能帮我解决这个问题吗?或者对此问题有其他解决方案吗?

您有两个节点
A
,因为在
合并中使用的标签不同。
因此,最后你有:

  • 一个节点
    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  
此外,在此示例中,您应该为属性
id
在标签
节点上创建唯一约束:
在(n:Node)上创建唯一约束断言n.id是唯一的