创建两个节点之间的关系类型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);
答
因此,根据其他答案评论,您的实际问题是,你创建了一个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);
如果你只是要修剪的右侧,可以可以用它代替TRIM
的RTRIM
功能。
谢谢!我刚刚尝试过,我得到了(没有改变,没有记录)。 – AngryAsianMan
MATCH(C:Company {Company:'Node1'})MATCH(J:Company {Company:'Node2'})RETURN C,J'返回你的两个节点吗? – manonthemat
我发现问题是什么。在csv文件中,Node1的命名中有一个额外的字符。 'Node1'有反正我可以通过Cypher修改这个吗? – AngryAsianMan