使用示例电影数据库,我试图在导演和演员之间建立一种新关系,以便有一种关系强度"关系上的属性,即导演指导演员的时间。
以下进行连接:
MATCH (t)-[a]->(m)<-[d]-dir
WHERE t.name CONTAINS "Tom H" AND type(a) CONTAINS "ACT" AND type(d) CONTAINS "DIR"
MERGE (dir)-[r:DIRECTED]->t
RETURN t, dir
可以找到关系强度
MATCH (t)-[a]->(m)<-[d]-dir
WHERE t.name CONTAINS "Tom H" AND type(a) CONTAINS "ACT" AND type(d) CONTAINS "DIR"
RETURN dir.name, COLLECT(m.title) AS movies, count(m) AS RelationshipStrength
我想在DIRECTED上有效地设置一个属性为relationshipStrength。
这可能吗?或者必须指望在RETURN语句之后使用,而设置和合并必须在RETURN语句之前?
答案 0 :(得分:0)
当然没问题:
MATCH (t)-[a]->(m)<-[d]-dir
WHERE t.name CONTAINS "Tom H" AND type(a) CONTAINS "ACT" AND type(d) CONTAINS "DIR"
WITH dir, t, COLLECT(m.title) AS movies, count(m) AS RelationshipStrength
MERGE (dir)-[r:DIRECTED]->(t) ON CREATE SET r.strength = RelationshipStrength
RETURN dir.name, t.name, movies, RelationshipStrength
您可能知道可以直接在模式中使用:ACTED_IN
等rel类型吗?并且您在真实世界的查询中使用参数。
我还会使用不同的关系类型来区分其他:DIRECTED
关系。