创建两个节点之间的关系类型neo4j

问题描述:

我试图创建两个节点之间的关系,出于某种原因我无法做到。创建两个节点之间的关系类型neo4j

MATCH (C:Company {Company: 'Node1'}) 
MATCH (J:Company {Company: 'Node2'}) 
MERGE (C)-[:Partner]-(J); 

我得到结果(没有更改,没有记录)。试图建立这种关系之前,我上传具有以下CYPHER一个CSV:

LOAD CSV WITH HEADERS FROM 'FILE:///company_info.csv' AS line 
MERGE (C:Company {Company: line.Company }) 
ON CREATE SET 
C.Partner = line.Partner, 
C.Product = line.Product, 
C.Partners = line.Partners, 
C.Customers = line.Customers 
ON MATCH SET 
C.Partner = line.Partner, 
C.Product = line.Product, 
C.Partners = line.Partners, 
C.Customers = line.Customers 

我知道C.Partner = line.Partner建立合作伙伴酒店没有关系类型。关于我可以在这里创建关系类型的任何建议?

您需要为关系提供一个方向。

MATCH (C:Company {Company: 'Node1'}) 
MATCH (J:Company {Company: 'Node2'}) 
MERGE (C)-[:Partner]->(J); 
+0

谢谢!我刚刚尝试过,我得到了(没有改变,没有记录)。 – AngryAsianMan

+3

MATCH(C:Company {Company:'Node1'})MATCH(J:Company {Company:'Node2'})RETURN C,J'返回你的两个节点吗? – manonthemat

+0

我发现问题是什么。在csv文件中,Node1的命名中有一个额外的字符。 'Node1'有反正我可以通过Cypher修改这个吗? – AngryAsianMan

因此,根据其他答案评论,您的实际问题是,你创建了一个Company节点与错误的属性值(“节点1”,而不是“节点1”)。因此,您的第一个MATCH子句失败。

要通过暗号从“节点1”到“节点1”更改节点的属性值,你可以这样做:

MATCH (c:Company {Company: 'Node1 '}) 
SET c.Company = 'Node1'; 

如果这是一个普遍的问题,您可以从财产的两端修剪空白在所有Company值节点是这样的:

MATCH (c:Company) 
SET c.Company = TRIM(c.Company); 

如果你只是要修剪的右侧,可以可以用它代替TRIMRTRIM功能。