Neo4j是否可以在作为计数功能结果的关系上设置属性

时间:2016-01-12 15:26:57

标签: neo4j

使用示例电影数据库,我试图在导演和演员之间建立一种新关系,以便有一种关系强度"关系上的属性,即导演指导演员的时间。

以下进行连接:

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语句之前?

1 个答案:

答案 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关系。