neo4j - 向关系添加属性

标签 neo4j cypher

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

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

我的交叉表是这样的

CarID (int)
DriverID (int)

这是我成功将其加载到 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)

我想在这个关系中添加一个属性。现在表格看起来像这样:

CarID (int)

DriverID (int)

Rating (int)

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

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)

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

谁能提供帮助?

最佳答案

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

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)

关于neo4j - 向关系添加属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50264978/

相关文章:

neo4j - 使用 cypher 和 apoc 将数百万个节点添加到 neo4j 空间层

javascript - Neo4j 插入具有各种关系的 Node

spring - 相当于SDN4中的template.createRelationBetween

neo4j - 如何使用 Cypher 在 Neo4j 中实现 Dijkstra 算法

Neo4J : intersection and predicates

Neo4j重复输入id异常

java - Neo4J批量创建关系

file - neo4j LOAD CSV 返回无法加载外部资源 - neo4j 在目录中丢失

neo4j - Neo4j 集合中的独特元素

javascript - 使用 neo4j-driver 获取 neo4j 中所有连接的 Node