向关系添加属性

Ric*_*Man 2 neo4j cypher

我正在尝试使用加载 CSV 文件LOAD FROM CSV并建立关系。我有一个交叉表,用于支持多对多关系。对于我的示例,我将使用两 (2) 个主节点:Car 和 Driver。

一辆车可以由一名或多名驾驶员驾驶,一名驾驶员可以驾驶一辆或多辆汽车。

我的交叉表看起来像这样

CarID (int)
DriverID (int)
Run Code Online (Sandbox Code Playgroud)

这是我成功将其加载到 Neo4j 中的代码

LOAD CSV WITH HEADERS FROM 'FILE:///CarToDriverXFER.csv' AS row FIELDTERMINATOR ','

MATCH (c:Cars {carID:row.carID})

MATCH (d:Drivers {driverID:row.driverID})

MERGE (c)-[:DRIVES]->(d)
Run Code Online (Sandbox Code Playgroud)

我想在这种关系中添加一个属性。现在表格如下所示:

CarID (int)

DriverID (int)

Rating (int)
Run Code Online (Sandbox Code Playgroud)

我不知道该怎么做。如果对象是一个节点,我知道如何执行此操作,但我在建立关系方面没有获得正确的语法。这是我尝试解决方案,但出现错误。

LOAD CSV WITH HEADERS FROM 'FILE:///CarToDriverXFER.csv' AS row FIELDTERMINATOR ','

MATCH (c:Cars {carID:row.carID})

MATCH (d:Drivers {driverID:row.driverID})

CREATE ({Rating:row.Rating})

MERGE (c)-[:DRIVES]->(d)
Run Code Online (Sandbox Code Playgroud)

上面的脚本加载了关系,但属性“Rating”未在属性上列出。

有人可以提供帮助吗?

Bru*_*res 6

您可以像向节点添加属性一样向关系添加属性,即:

LOAD CSV WITH HEADERS FROM 'FILE:///CarToDriverXFER.csv' AS row FIELDTERMINATOR ','
MATCH (c:Cars {carID:row.carID})
MATCH (d:Drivers {driverID:row.driverID})
// adding 'Rating' attribute to ':Drives' relationship between 'c' and 'd'
MERGE (c)-[:DRIVES {Rating:row.Rating}]->(d)
Run Code Online (Sandbox Code Playgroud)